1.19.4-pre1

This commit is contained in:
modmuss50 2023-02-23 15:51:39 +00:00
parent 32e719115b
commit 759c3fbfc3
58 changed files with 210 additions and 263 deletions

View file

@ -55,7 +55,7 @@ public class RebornCoreClient implements ClientModInitializer {
}); });
ClientLifecycleEvents.CLIENT_STARTED.register(client -> { ClientLifecycleEvents.CLIENT_STARTED.register(client -> {
String strangeMcLang = client.getLanguageManager().getLanguage().getCode(); String strangeMcLang = client.getLanguageManager().getLanguage();
RebornCore.locale = Locale.forLanguageTag(strangeMcLang.substring(0, 2)); RebornCore.locale = Locale.forLanguageTag(strangeMcLang.substring(0, 2));
}); });
} }

View file

@ -79,7 +79,6 @@ public class ClientChunkManager {
final Tessellator tessellator = Tessellator.getInstance(); final Tessellator tessellator = Tessellator.getInstance();
final BufferBuilder bufferBuilder = tessellator.getBuffer(); final BufferBuilder bufferBuilder = tessellator.getBuffer();
RenderSystem.disableTexture();
RenderSystem.disableBlend(); RenderSystem.disableBlend();
RenderSystem.lineWidth(5.0F); RenderSystem.lineWidth(5.0F);
@ -100,7 +99,6 @@ public class ClientChunkManager {
tessellator.draw(); tessellator.draw();
RenderSystem.lineWidth(1.0F); RenderSystem.lineWidth(1.0F);
RenderSystem.enableBlend(); RenderSystem.enableBlend();
RenderSystem.enableTexture();
} }
} }

View file

@ -79,7 +79,7 @@ public class ItemStackRenderer implements HudRenderCallback {
framebuffer.beginWrite(true); framebuffer.beginWrite(true);
GlStateManager._clear(GL12.GL_COLOR_BUFFER_BIT | GL12.GL_DEPTH_BUFFER_BIT, MinecraftClient.IS_SYSTEM_MAC); GlStateManager._clear(GL12.GL_COLOR_BUFFER_BIT | GL12.GL_DEPTH_BUFFER_BIT, MinecraftClient.IS_SYSTEM_MAC);
MinecraftClient.getInstance().getItemRenderer().renderInGui(item, 0, 0); MinecraftClient.getInstance().getItemRenderer().renderInGui(stack, item, 0, 0);
framebuffer.endWrite(); framebuffer.endWrite();
framebuffer.beginRead(); framebuffer.beginRead();

View file

@ -146,7 +146,6 @@ public class RenderUtil {
} }
public static void drawGradientRect(MatrixStack matrices, int zLevel, int left, int top, int right, int bottom, int startColor, int endColor) { public static void drawGradientRect(MatrixStack matrices, int zLevel, int left, int top, int right, int bottom, int startColor, int endColor) {
RenderSystem.disableTexture();
RenderSystem.enableBlend(); RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc(); RenderSystem.defaultBlendFunc();
RenderSystem.setShader(GameRenderer::getPositionColorProgram); RenderSystem.setShader(GameRenderer::getPositionColorProgram);
@ -172,7 +171,6 @@ public class RenderUtil {
tessellator.draw(); tessellator.draw();
RenderSystem.disableBlend(); RenderSystem.disableBlend();
RenderSystem.enableTexture();
} }
} }

View file

@ -50,7 +50,7 @@ public class RedstoneConfigGui {
int i = 0; int i = 0;
int spread = configuration.getElements().size() == 3 ? 27 : 18; int spread = configuration.getElements().size() == 3 ? 27 : 18;
for (RedstoneConfiguration.Element element : configuration.getElements()) { for (RedstoneConfiguration.Element element : configuration.getElements()) {
itemRenderer.renderInGuiWithOverrides(element.getIcon(), x - 3, y + (i * spread) - 5); itemRenderer.renderInGuiWithOverrides(matrixStack, element.getIcon(), x - 3, y + (i * spread) - 5);
guiBase.getTextRenderer().draw(matrixStack, Text.translatable("reborncore.gui.fluidconfig." + element.getName()), x + 15, y + (i * spread), -1); guiBase.getTextRenderer().draw(matrixStack, Text.translatable("reborncore.gui.fluidconfig." + element.getName()), x + 15, y + (i * spread), -1);

View file

@ -114,8 +114,8 @@ public class ConfigSlotElement extends ElementBase {
RenderSystem.enableBlend(); RenderSystem.enableBlend();
RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
ItemRenderer renderItem = MinecraftClient.getInstance().getItemRenderer(); ItemRenderer renderItem = MinecraftClient.getInstance().getItemRenderer();
renderItem.renderInGuiWithOverrides(stack, xPos, yPos); renderItem.renderInGuiWithOverrides(matrixStack, stack, xPos, yPos);
renderItem.renderGuiItemOverlay(gui.getTextRenderer(), stack, xPos, yPos, null); renderItem.renderGuiItemOverlay(matrixStack, gui.getTextRenderer(), stack, xPos, yPos, null);
RenderSystem.disableDepthTest(); RenderSystem.disableDepthTest();
matrixStack.pop(); matrixStack.pop();
if (isHovering) { if (isHovering) {

View file

@ -318,7 +318,7 @@ public class ElementBase {
RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA); RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer();
itemRenderer.renderInGuiWithOverrides(sprite.itemStack, x + gui.getGuiLeft(), y + gui.getGuiTop()); itemRenderer.renderInGuiWithOverrides(matrixStack, sprite.itemStack, x + gui.getGuiLeft(), y + gui.getGuiTop());
matrixStack.pop(); matrixStack.pop();
} }

View file

@ -387,7 +387,7 @@ public class GuiBuilder {
public void drawSlotTab(MatrixStack matrixStack, GuiBase<?> gui, int x, int y, ItemStack stack) { public void drawSlotTab(MatrixStack matrixStack, GuiBase<?> gui, int x, int y, ItemStack stack) {
RenderSystem.setShaderTexture(0, resourceLocation); RenderSystem.setShaderTexture(0, resourceLocation);
gui.drawTexture(matrixStack, x, y, 217, 82, 24, 24); gui.drawTexture(matrixStack, x, y, 217, 82, 24, 24);
gui.getMinecraft().getItemRenderer().renderInGuiWithOverrides(stack, x + 5, y + 4); gui.getMinecraft().getItemRenderer().renderInGuiWithOverrides(matrixStack, stack, x + 5, y + 4);
} }
@ -461,7 +461,7 @@ public class GuiBuilder {
@Override @Override
public void render(MatrixStack matrixStack, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean hovering, float delta) { public void render(MatrixStack matrixStack, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean hovering, float delta) {
MinecraftClient.getInstance().textRenderer.drawTrimmed(tip, x, y, width, 11184810); MinecraftClient.getInstance().textRenderer.drawTrimmed(matrixStack, tip, x, y, width, 11184810);
} }
} }
} }

View file

@ -33,6 +33,7 @@ import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.block.BlockRenderManager; import net.minecraft.client.render.block.BlockRenderManager;
import net.minecraft.client.render.model.json.ModelTransformation; import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.render.model.json.ModelTransformationMode;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.fluid.FluidState; import net.minecraft.fluid.FluidState;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -40,6 +41,7 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.random.Random; import net.minecraft.util.math.random.Random;
import net.minecraft.world.BlockRenderView; import net.minecraft.world.BlockRenderView;
import net.minecraft.world.BlockView; import net.minecraft.world.BlockView;
import net.minecraft.world.World;
import reborncore.common.blockentity.MultiblockWriter; import reborncore.common.blockentity.MultiblockWriter;
import java.util.function.BiPredicate; import java.util.function.BiPredicate;
@ -48,7 +50,7 @@ import java.util.function.BiPredicate;
* Renders a hologram * Renders a hologram
*/ */
public public
record HologramRenderer(BlockRenderView view, MatrixStack matrix, VertexConsumerProvider vertexConsumerProvider, record HologramRenderer(World view, MatrixStack matrix, VertexConsumerProvider vertexConsumerProvider,
float scale) implements MultiblockWriter { float scale) implements MultiblockWriter {
private static final BlockPos OUT_OF_WORLD_POS = new BlockPos(0, 260, 0); // Bad hack; disables lighting private static final BlockPos OUT_OF_WORLD_POS = new BlockPos(0, 260, 0); // Bad hack; disables lighting
@ -63,7 +65,7 @@ record HologramRenderer(BlockRenderView view, MatrixStack matrix, VertexConsumer
if (state.getBlock() instanceof FluidBlock) { if (state.getBlock() instanceof FluidBlock) {
FluidState fluidState = ((FluidBlock) state.getBlock()).getFluidState(state); FluidState fluidState = ((FluidBlock) state.getBlock()).getFluidState(state);
MinecraftClient.getInstance().getItemRenderer().renderItem(new ItemStack(fluidState.getFluid().getBucketItem()), ModelTransformation.Mode.FIXED, 15728880, OverlayTexture.DEFAULT_UV, matrix, vertexConsumerProvider, 0); MinecraftClient.getInstance().getItemRenderer().renderItem(new ItemStack(fluidState.getFluid().getBucketItem()), ModelTransformationMode.FIXED, 15728880, OverlayTexture.DEFAULT_UV, matrix, vertexConsumerProvider, view, 0);
} else { } else {
matrix.translate(-0.5, -0.5, -0.5); matrix.translate(-0.5, -0.5, -0.5);
VertexConsumer consumer = vertexConsumerProvider.getBuffer(RenderLayers.getBlockLayer(state)); VertexConsumer consumer = vertexConsumerProvider.getBuffer(RenderLayers.getBlockLayer(state));

View file

@ -32,10 +32,12 @@ import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.Ingredient;
import net.minecraft.recipe.Recipe; import net.minecraft.recipe.Recipe;
import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeSerializer;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.registry.Registries; import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.collection.DefaultedList;
import net.minecraft.world.World; import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import reborncore.RebornCore; import reborncore.RebornCore;
import reborncore.api.recipe.IRecipeCrafterProvider; import reborncore.api.recipe.IRecipeCrafterProvider;
import reborncore.common.crafting.ingredient.RebornIngredient; import reborncore.common.crafting.ingredient.RebornIngredient;
@ -103,7 +105,7 @@ public class RebornRecipe implements Recipe<Inventory>, CustomOutputRecipe {
return ingredients; return ingredients;
} }
public List<ItemStack> getOutputs() { public List<ItemStack> getOutputs(@Nullable DynamicRegistryManager registryManager) {
return Collections.unmodifiableList(outputs); return Collections.unmodifiableList(outputs);
} }
@ -142,9 +144,8 @@ public class RebornRecipe implements Recipe<Inventory>, CustomOutputRecipe {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Deprecated
@Override @Override
public ItemStack craft(Inventory inv) { public ItemStack craft(Inventory inventory, @Nullable DynamicRegistryManager dynamicRegistryManager) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@ -156,11 +157,11 @@ public class RebornRecipe implements Recipe<Inventory>, CustomOutputRecipe {
/** /**
* Do not call directly, this is implemented only as a fallback. * Do not call directly, this is implemented only as a fallback.
* {@link RebornRecipe#getOutputs()} will return all the outputs * {@link RebornRecipe#getOutputs(DynamicRegistryManager)} will return all the outputs
*/ */
@Deprecated @Deprecated
@Override @Override
public ItemStack getOutput() { public ItemStack getOutput(DynamicRegistryManager dynamicRegistryManager) {
if (outputs.isEmpty()) { if (outputs.isEmpty()) {
return ItemStack.EMPTY; return ItemStack.EMPTY;
} }

View file

@ -70,7 +70,7 @@ public abstract class AbstractRecipeSerde<R extends RebornRecipe> implements Rec
protected void writeOutputs(R recipe, JsonObject jsonObject) { protected void writeOutputs(R recipe, JsonObject jsonObject) {
final JsonArray resultsArray = new JsonArray(); final JsonArray resultsArray = new JsonArray();
for (ItemStack stack : recipe.getOutputs()) { for (ItemStack stack : recipe.getOutputs(null)) {
final JsonObject stackObject = new JsonObject(); final JsonObject stackObject = new JsonObject();
stackObject.addProperty("item", Registries.ITEM.getId(stack.getItem()).toString()); stackObject.addProperty("item", Registries.ITEM.getId(stack.getItem()).toString());

View file

@ -1,37 +0,0 @@
/*
* This file is part of RebornCore, licensed under the MIT License (MIT).
*
* Copyright (c) 2021 TeamReborn
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package reborncore.common.explosion;
import net.minecraft.entity.Entity;
import net.minecraft.entity.damage.EntityDamageSource;
/**
* Created by modmuss50 on 16/03/2016.
*/
public class NuclearDamageSource extends EntityDamageSource {
public NuclearDamageSource(Entity entity) {
super("nuke", entity);
}
}

View file

@ -30,7 +30,7 @@ import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup; import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntity;
import net.minecraft.network.Packet; import net.minecraft.network.packet.Packet;
import net.minecraft.network.PacketByteBuf; import net.minecraft.network.PacketByteBuf;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;

View file

@ -67,7 +67,7 @@ public class PaddedShapedRecipeJsonBuilder extends ShapedRecipeJsonBuilder {
static class PaddedShapedRecipeJsonProvider extends PaddedShapedRecipeJsonBuilder.ShapedRecipeJsonProvider { static class PaddedShapedRecipeJsonProvider extends PaddedShapedRecipeJsonBuilder.ShapedRecipeJsonProvider {
public PaddedShapedRecipeJsonProvider(Identifier recipeId, Item output, int resultCount, String group, CraftingRecipeCategory category, List<String> pattern, Map<Character, Ingredient> inputs, Advancement.Builder advancementBuilder, Identifier advancementId) { public PaddedShapedRecipeJsonProvider(Identifier recipeId, Item output, int resultCount, String group, CraftingRecipeCategory category, List<String> pattern, Map<Character, Ingredient> inputs, Advancement.Builder advancementBuilder, Identifier advancementId) {
super(recipeId, output, resultCount, group, category, pattern, inputs, advancementBuilder, advancementId); super(recipeId, output, resultCount, group, category, pattern, inputs, advancementBuilder, advancementId, false);
} }
@Override @Override

View file

@ -28,6 +28,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import reborncore.RebornCore; import reborncore.RebornCore;
@ -41,6 +42,7 @@ import reborncore.common.util.ItemUtils;
import reborncore.common.util.RebornInventory; import reborncore.common.util.RebornInventory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import java.util.Optional; import java.util.Optional;
/** /**
@ -154,21 +156,23 @@ public class RecipeCrafter implements IUpgradeHandler {
} }
// If it has reached the recipe tick time // If it has reached the recipe tick time
if (currentRecipe != null && currentTickTime >= currentNeededTicks && hasAllInputs()) { if (currentRecipe != null && currentTickTime >= currentNeededTicks && hasAllInputs()) {
final List<ItemStack> outputs = currentRecipe.getOutputs(getDynamicRegistryManager());
boolean canGiveInvAll = true; boolean canGiveInvAll = true;
// Checks to see if it can fit the output // Checks to see if it can fit the output
for (int i = 0; i < currentRecipe.getOutputs().size(); i++) { for (int i = 0; i < outputs.size(); i++) {
if (!canFitOutput(currentRecipe.getOutputs().get(i), outputSlots[i])) { if (!canFitOutput(outputs.get(i), outputSlots[i])) {
canGiveInvAll = false; canGiveInvAll = false;
} }
} }
// The slots that have been filled // The slots that have been filled
ArrayList<Integer> filledSlots = new ArrayList<>(); ArrayList<Integer> filledSlots = new ArrayList<>();
if (canGiveInvAll && currentRecipe.onCraft(blockEntity)) { if (canGiveInvAll && currentRecipe.onCraft(blockEntity)) {
for (int i = 0; i < currentRecipe.getOutputs().size(); i++) { for (int i = 0; i < outputs.size(); i++) {
// Checks it has not been filled // Checks it has not been filled
if (!filledSlots.contains(outputSlots[i])) { if (!filledSlots.contains(outputSlots[i])) {
// Fills the slot with the output stack // Fills the slot with the output stack
fitStack(currentRecipe.getOutputs().get(i).copy(), outputSlots[i]); fitStack(outputs.get(i).copy(), outputSlots[i]);
filledSlots.add(outputSlots[i]); filledSlots.add(outputSlots[i]);
} }
} }
@ -207,10 +211,12 @@ public class RecipeCrafter implements IUpgradeHandler {
if (!hasAllInputs(recipe)) continue; if (!hasAllInputs(recipe)) continue;
if (!recipe.canCraft(blockEntity)) continue; if (!recipe.canCraft(blockEntity)) continue;
final List<ItemStack> outputs = recipe.getOutputs(getDynamicRegistryManager());
// This checks to see if it can fit all the outputs // This checks to see if it can fit all the outputs
boolean hasOutputSpace = true; boolean hasOutputSpace = true;
for (int i = 0; i < recipe.getOutputs().size(); i++) { for (int i = 0; i < outputs.size(); i++) {
if (!canFitOutput(recipe.getOutputs().get(i), outputSlots[i])) { if (!canFitOutput(outputs.get(i), outputSlots[i])) {
hasOutputSpace = false; hasOutputSpace = false;
} }
} }
@ -323,8 +329,10 @@ public class RecipeCrafter implements IUpgradeHandler {
public boolean canCraftAgain() { public boolean canCraftAgain() {
for (RebornRecipe recipe : recipeType.getRecipes(blockEntity.getWorld())) { for (RebornRecipe recipe : recipeType.getRecipes(blockEntity.getWorld())) {
if (recipe.canCraft(blockEntity) && hasAllInputs(recipe)) { if (recipe.canCraft(blockEntity) && hasAllInputs(recipe)) {
for (int i = 0; i < recipe.getOutputs().size(); i++) { final List<ItemStack> outputs = recipe.getOutputs(getDynamicRegistryManager());
if (!canFitOutput(recipe.getOutputs().get(i), outputSlots[i])) {
for (int i = 0; i < outputs.size(); i++) {
if (!canFitOutput(outputs.get(i), outputSlots[i])) {
return false; return false;
} }
} }
@ -431,4 +439,9 @@ public class RecipeCrafter implements IUpgradeHandler {
public boolean isMuffled() { public boolean isMuffled() {
return parentUpgradeHandler.map(IUpgradeHandler::isMuffled).orElse(false); return parentUpgradeHandler.map(IUpgradeHandler::isMuffled).orElse(false);
} }
@Nullable
private DynamicRegistryManager getDynamicRegistryManager() {
return blockEntity.getWorld().getRegistryManager();
}
} }

View file

@ -28,11 +28,11 @@
} }
], ],
"depends": { "depends": {
"fabricloader": ">=0.14.11", "fabricloader": ">=0.14.15",
"fabric-api": ">=0.68.1", "fabric-api": ">=0.75.0",
"team_reborn_energy": ">=2.3.0", "team_reborn_energy": ">=2.3.0",
"fabric-biome-api-v1": ">=3.0.0", "fabric-biome-api-v1": ">=3.0.0",
"minecraft": ">=1.19.3- <1.19.4-" "minecraft": ">=1.19.4- <1.19.5-"
}, },
"authors": [ "authors": [
"Team Reborn", "Team Reborn",

View file

@ -194,7 +194,7 @@ dependencies {
include project(":RebornCore") include project(":RebornCore")
optionalClientDependency("me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}", true) optionalClientDependency("me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}", false)
// Use groovy for datagen/gametest, if you are copying this you prob dont want it. // Use groovy for datagen/gametest, if you are copying this you prob dont want it.
gametestImplementation 'org.apache.groovy:groovy:4.0.6' gametestImplementation 'org.apache.groovy:groovy:4.0.6'

View file

@ -7,10 +7,10 @@ mod_version=5.5.0
# Fabric Properties # Fabric Properties
# check these on https://modmuss50.me/fabric.html # check these on https://modmuss50.me/fabric.html
minecraft_version=1.19.3 minecraft_version=1.19.4-pre1
yarn_version=1.19.3+build.1 yarn_version=1.19.4-pre1+build.1
loader_version=0.14.11 loader_version=0.14.15
fapi_version=0.69.1+1.19.3 fapi_version=0.75.0+1.19.4
# Dependencies # Dependencies
energy_version=2.3.0 energy_version=2.3.0

Binary file not shown.

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip
networkTimeout=10000 networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View file

@ -52,7 +52,7 @@ public class MachineRecipeDisplay<R extends RebornRecipe> implements Display {
public MachineRecipeDisplay(R recipe) { public MachineRecipeDisplay(R recipe) {
this.recipe = recipe; this.recipe = recipe;
this.inputs = CollectionUtils.map(recipe.getRebornIngredients(), ing -> EntryIngredients.ofItemStacks(ing.getPreviewStacks())); this.inputs = CollectionUtils.map(recipe.getRebornIngredients(), ing -> EntryIngredients.ofItemStacks(ing.getPreviewStacks()));
this.outputs = recipe.getOutputs().stream().map(EntryIngredients::of).collect(Collectors.toList()); this.outputs = recipe.getOutputs(null).stream().map(EntryIngredients::of).collect(Collectors.toList());
this.time = recipe.getTime(); this.time = recipe.getTime();
this.energy = recipe.getPower(); this.energy = recipe.getPower();
if (recipe instanceof BlastFurnaceRecipe) { if (recipe instanceof BlastFurnaceRecipe) {

View file

@ -51,8 +51,8 @@ public class GuiAutoCrafting extends GuiBase<BuiltScreenHandler> {
this.blockEntityAutoCraftingTable = blockEntity; this.blockEntityAutoCraftingTable = blockEntity;
} }
public void renderItemStack(ItemStack stack, int x, int y) { public void renderItemStack(MatrixStack matrixStack, ItemStack stack, int x, int y) {
MinecraftClient.getInstance().getItemRenderer().renderInGuiWithOverrides(stack, x, y); MinecraftClient.getInstance().getItemRenderer().renderInGuiWithOverrides(matrixStack, stack, x, y);
} }
@Override @Override
@ -79,7 +79,7 @@ public class GuiAutoCrafting extends GuiBase<BuiltScreenHandler> {
CraftingRecipe recipe = blockEntityAutoCraftingTable.getCurrentRecipe(); CraftingRecipe recipe = blockEntityAutoCraftingTable.getCurrentRecipe();
if (recipe != null) { if (recipe != null) {
renderItemStack(recipe.getOutput(), 95 + getGuiLeft(), 42 + getGuiTop()); renderItemStack(matrixStack, recipe.getOutput(getMachine().getWorld().getRegistryManager()), 95 + getGuiLeft(), 42 + getGuiTop());
} }
builder.drawLockButton(matrixStack, this, 145, 4, mouseX, mouseY, layer, blockEntityAutoCraftingTable.locked); builder.drawLockButton(matrixStack, this, 145, 4, mouseX, mouseY, layer, blockEntityAutoCraftingTable.locked);

View file

@ -32,6 +32,7 @@ import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.render.block.entity.BlockEntityRenderer; import net.minecraft.client.render.block.entity.BlockEntityRenderer;
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
import net.minecraft.client.render.model.json.ModelTransformation; import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.render.model.json.ModelTransformationMode;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
@ -67,7 +68,7 @@ public class StorageUnitRenderer implements BlockEntityRenderer<StorageUnitBaseB
case EAST -> matrices.translate(-1, 1, 2); case EAST -> matrices.translate(-1, 1, 2);
} }
int lightAbove = WorldRenderer.getLightmapCoordinates(storage.getWorld(), storage.getPos().offset(storage.getFacing())); int lightAbove = WorldRenderer.getLightmapCoordinates(storage.getWorld(), storage.getPos().offset(storage.getFacing()));
MinecraftClient.getInstance().getItemRenderer().renderItem(stack, ModelTransformation.Mode.FIXED, lightAbove, OverlayTexture.DEFAULT_UV, matrices, vertexConsumers, 0); MinecraftClient.getInstance().getItemRenderer().renderItem(stack, ModelTransformationMode.FIXED, lightAbove, OverlayTexture.DEFAULT_UV, matrices, vertexConsumers, storage.getWorld(), 0);
matrices.pop(); matrices.pop();
// Text rendering // Text rendering
@ -89,12 +90,12 @@ public class StorageUnitRenderer implements BlockEntityRenderer<StorageUnitBaseB
// Render item count // Render item count
String count = String.valueOf(storage.storedAmount); String count = String.valueOf(storage.storedAmount);
xPosition = (float) (-textRenderer.getWidth(count) / 2); xPosition = (float) (-textRenderer.getWidth(count) / 2);
textRenderer.draw(count, xPosition, -4f + 40, 0, false, matrices.peek().getPositionMatrix(), vertexConsumers, false, 0, light); textRenderer.draw(count, xPosition, -4f + 40, 0, false, matrices.peek().getPositionMatrix(), vertexConsumers, TextRenderer.TextLayerType.NORMAL, 0, light);
// Render name // Render name
String item = stack.getName().asTruncatedString(18); String item = stack.getName().asTruncatedString(18);
xPosition = (float) (-textRenderer.getWidth(item) / 2); xPosition = (float) (-textRenderer.getWidth(item) / 2);
textRenderer.draw(item, xPosition, -4f - 40, 0, false, matrices.peek().getPositionMatrix(), vertexConsumers, false, 0, light); textRenderer.draw(item, xPosition, -4f - 40, 0, false, matrices.peek().getPositionMatrix(), vertexConsumers, TextRenderer.TextLayerType.NORMAL, 0, light);
matrices.pop(); matrices.pop();
} }

View file

@ -26,6 +26,7 @@ package techreborn.client.render.entitys;
import net.minecraft.client.model.Model; import net.minecraft.client.model.Model;
import net.minecraft.client.model.ModelPart; import net.minecraft.client.model.ModelPart;
import net.minecraft.client.model.ModelPartBuilder;
import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.VertexConsumerProvider;
@ -40,9 +41,12 @@ import techreborn.blockentity.generator.basic.WindMillBlockEntity;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap; import java.util.HashMap;
import java.util.Set;
public class TurbineRenderer implements BlockEntityRenderer<WindMillBlockEntity> { public class TurbineRenderer implements BlockEntityRenderer<WindMillBlockEntity> {
private static final Set<Direction> ALL_DIRECTIONS = EnumSet.allOf(Direction.class);
private static final TurbineModel MODEL = new TurbineModel(); private static final TurbineModel MODEL = new TurbineModel();
public static final Identifier TEXTURE = new Identifier("techreborn:textures/block/machines/generators/wind_mill_turbine.png"); public static final Identifier TEXTURE = new Identifier("techreborn:textures/block/machines/generators/wind_mill_turbine.png");
@ -76,14 +80,14 @@ public class TurbineRenderer implements BlockEntityRenderer<WindMillBlockEntity>
super(RenderLayer::getEntityCutoutNoCull); super(RenderLayer::getEntityCutoutNoCull);
ModelPart.Cuboid[] baseCuboids = { ModelPart.Cuboid[] baseCuboids = {
new ModelPart.Cuboid(0, 0, -2.0F, -2.0F, -1.0F, 4F, 4F, 2F, 0F, 0F, 0F, false, 64F, 64F), new ModelPart.Cuboid(0, 0, -2.0F, -2.0F, -1.0F, 4F, 4F, 2F, 0F, 0F, 0F, false, 64F, 64F, ALL_DIRECTIONS),
new ModelPart.Cuboid(0, 6, -1.0F, -1.0F, -2.0F, 2F, 2F, 1F, 0F, 0F, 0F, false, 64F, 64F) new ModelPart.Cuboid(0, 6, -1.0F, -1.0F, -2.0F, 2F, 2F, 1F, 0F, 0F, 0F, false, 64F, 64F, ALL_DIRECTIONS)
}; };
base = new ModelPart(Arrays.asList(baseCuboids), new HashMap<>() { base = new ModelPart(Arrays.asList(baseCuboids), new HashMap<>() {
{ {
ModelPart.Cuboid[] blade1Cuboids = { ModelPart.Cuboid[] blade1Cuboids = {
new ModelPart.Cuboid(0, 9, -24.0F, -1.0F, -0.5F, 24F, 2F, 1F, 0F, 0F, 0F, false, 64F, 64F) new ModelPart.Cuboid(0, 9, -24.0F, -1.0F, -0.5F, 24F, 2F, 1F, 0F, 0F, 0F, false, 64F, 64F, ALL_DIRECTIONS)
}; };
ModelPart blade1 = new ModelPart(Arrays.asList(blade1Cuboids), Collections.emptyMap()); ModelPart blade1 = new ModelPart(Arrays.asList(blade1Cuboids), Collections.emptyMap());
blade1.setPivot(0.0F, 0.0F, 0.0F); blade1.setPivot(0.0F, 0.0F, 0.0F);
@ -91,7 +95,7 @@ public class TurbineRenderer implements BlockEntityRenderer<WindMillBlockEntity>
put("blade1", blade1); put("blade1", blade1);
ModelPart.Cuboid[] blade2Cuboids = { ModelPart.Cuboid[] blade2Cuboids = {
new ModelPart.Cuboid(0, 9, -24.0F, -1.0F, -0.5F, 24F, 2F, 1F, 0F, 0F, 0F, false, 64F, 64F) new ModelPart.Cuboid(0, 9, -24.0F, -1.0F, -0.5F, 24F, 2F, 1F, 0F, 0F, 0F, false, 64F, 64F, ALL_DIRECTIONS)
}; };
ModelPart blade2 = new ModelPart(Arrays.asList(blade2Cuboids), Collections.emptyMap()); ModelPart blade2 = new ModelPart(Arrays.asList(blade2Cuboids), Collections.emptyMap());
blade2.setPivot(0.0F, 0.0F, 0.0F); blade2.setPivot(0.0F, 0.0F, 0.0F);
@ -99,7 +103,7 @@ public class TurbineRenderer implements BlockEntityRenderer<WindMillBlockEntity>
put("blade2", blade2); put("blade2", blade2);
ModelPart.Cuboid[] blade3Cuboids = { ModelPart.Cuboid[] blade3Cuboids = {
new ModelPart.Cuboid(0, 9, -24.0F, -2.0F, -1.075F, 24F, 2F, 1F, 0F, 0F, 0F, false, 64F, 64F) new ModelPart.Cuboid(0, 9, -24.0F, -2.0F, -1.075F, 24F, 2F, 1F, 0F, 0F, 0F, false, 64F, 64F, ALL_DIRECTIONS)
}; };
ModelPart blade3 = new ModelPart(Arrays.asList(blade3Cuboids), Collections.emptyMap()); ModelPart blade3 = new ModelPart(Arrays.asList(blade3Cuboids), Collections.emptyMap());
blade3.setPivot(0.0F, 0.0F, 0.0F); blade3.setPivot(0.0F, 0.0F, 0.0F);

View file

@ -31,7 +31,6 @@ import net.minecraft.registry.RegistryKeys
import techreborn.TechReborn import techreborn.TechReborn
import techreborn.datagen.models.BlockLootTableProvider import techreborn.datagen.models.BlockLootTableProvider
import techreborn.datagen.models.ModelProvider import techreborn.datagen.models.ModelProvider
import techreborn.datagen.recipes.Json2Datagen
import techreborn.datagen.recipes.crafting.CraftingRecipesProvider import techreborn.datagen.recipes.crafting.CraftingRecipesProvider
import techreborn.datagen.recipes.machine.alloy_smelter.AlloySmelterRecipesProvider import techreborn.datagen.recipes.machine.alloy_smelter.AlloySmelterRecipesProvider
import techreborn.datagen.recipes.machine.assembling_machine.AssemblingMachineRecipesProvider import techreborn.datagen.recipes.machine.assembling_machine.AssemblingMachineRecipesProvider
@ -46,8 +45,8 @@ import techreborn.datagen.recipes.smelting.SmeltingRecipesProvider
import techreborn.datagen.tags.TRBlockTagProvider import techreborn.datagen.tags.TRBlockTagProvider
import techreborn.datagen.tags.TRItemTagProvider import techreborn.datagen.tags.TRItemTagProvider
import techreborn.datagen.tags.TRPointOfInterestTagProvider import techreborn.datagen.tags.TRPointOfInterestTagProvider
import techreborn.datagen.worldgen.TRWorldGenBootstrap import techreborn.datagen.dynamic.TRDynamicContent
import techreborn.datagen.worldgen.TRWorldGenProvider import techreborn.datagen.dynamic.TRDynamicProvider
class TechRebornDataGen implements DataGeneratorEntrypoint { class TechRebornDataGen implements DataGeneratorEntrypoint {
@ -85,7 +84,7 @@ class TechRebornDataGen implements DataGeneratorEntrypoint {
add ModelProvider::new add ModelProvider::new
add BlockLootTableProvider::new add BlockLootTableProvider::new
add TRWorldGenProvider::new add TRDynamicProvider::new
} }
@Override @Override
@ -95,7 +94,8 @@ class TechRebornDataGen implements DataGeneratorEntrypoint {
@Override @Override
void buildRegistry(RegistryBuilder registryBuilder) { void buildRegistry(RegistryBuilder registryBuilder) {
registryBuilder.addRegistry(RegistryKeys.CONFIGURED_FEATURE, TRWorldGenBootstrap::configuredFeatures) registryBuilder.addRegistry(RegistryKeys.DAMAGE_TYPE, TRDynamicContent::damageTypes)
registryBuilder.addRegistry(RegistryKeys.PLACED_FEATURE, TRWorldGenBootstrap::placedFeatures) registryBuilder.addRegistry(RegistryKeys.CONFIGURED_FEATURE, TRDynamicContent::configuredFeatures)
registryBuilder.addRegistry(RegistryKeys.PLACED_FEATURE, TRDynamicContent::placedFeatures)
} }
} }

View file

@ -22,10 +22,12 @@
* SOFTWARE. * SOFTWARE.
*/ */
package techreborn.datagen.worldgen package techreborn.datagen.dynamic
import net.minecraft.block.BlockState import net.minecraft.block.BlockState
import net.minecraft.block.Blocks import net.minecraft.block.Blocks
import net.minecraft.entity.damage.DamageEffects
import net.minecraft.entity.damage.DamageType
import net.minecraft.registry.Registerable import net.minecraft.registry.Registerable
import net.minecraft.registry.RegistryEntryLookup import net.minecraft.registry.RegistryEntryLookup
import net.minecraft.registry.RegistryKeys import net.minecraft.registry.RegistryKeys
@ -52,12 +54,18 @@ import net.minecraft.world.gen.trunk.StraightTrunkPlacer
import techreborn.blocks.misc.BlockRubberLog import techreborn.blocks.misc.BlockRubberLog
import techreborn.init.ModFluids import techreborn.init.ModFluids
import techreborn.init.TRContent import techreborn.init.TRContent
import techreborn.init.TRDamageTypes
import techreborn.world.RubberTreeSpikeDecorator import techreborn.world.RubberTreeSpikeDecorator
import techreborn.world.TROreFeatureConfig import techreborn.world.TROreFeatureConfig
import techreborn.world.TargetDimension import techreborn.world.TargetDimension
import techreborn.world.WorldGenerator import techreborn.world.WorldGenerator
class TRWorldGenBootstrap { class TRDynamicContent {
static void damageTypes(Registerable<DamageType> registry) {
registry.register(TRDamageTypes.ELECTRIC_SHOCK, new DamageType("electric_shock", 0.1F, DamageEffects.BURNING))
registry.register(TRDamageTypes.FUSION, new DamageType("fusion", 0.1F, DamageEffects.BURNING))
}
static void configuredFeatures(Registerable<ConfiguredFeature> registry) { static void configuredFeatures(Registerable<ConfiguredFeature> registry) {
def placedFeatureLookup = registry.getRegistryLookup(RegistryKeys.PLACED_FEATURE) def placedFeatureLookup = registry.getRegistryLookup(RegistryKeys.PLACED_FEATURE)

View file

@ -22,7 +22,7 @@
* SOFTWARE. * SOFTWARE.
*/ */
package techreborn.datagen.worldgen package techreborn.datagen.dynamic
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider
@ -31,8 +31,8 @@ import net.minecraft.registry.RegistryWrapper
import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletableFuture
class TRWorldGenProvider extends FabricDynamicRegistryProvider { class TRDynamicProvider extends FabricDynamicRegistryProvider {
TRWorldGenProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) { TRDynamicProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture) super(output, registriesFuture)
} }
@ -40,6 +40,7 @@ class TRWorldGenProvider extends FabricDynamicRegistryProvider {
protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) { protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) {
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.CONFIGURED_FEATURE)) entries.addAll(registries.getWrapperOrThrow(RegistryKeys.CONFIGURED_FEATURE))
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.PLACED_FEATURE)) entries.addAll(registries.getWrapperOrThrow(RegistryKeys.PLACED_FEATURE))
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.DAMAGE_TYPE))
} }
@Override @Override

View file

@ -30,6 +30,7 @@ import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.Ingredient;
import net.minecraft.recipe.ShapedRecipe; import net.minecraft.recipe.ShapedRecipe;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.collection.DefaultedList;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -56,13 +57,13 @@ public class RollingMachineRecipe extends RebornRecipe {
} }
@Override @Override
public List<ItemStack> getOutputs() { public List<ItemStack> getOutputs(DynamicRegistryManager registryManager) {
return Collections.singletonList(shapedRecipe.getOutput()); return Collections.singletonList(shapedRecipe.getOutput(registryManager));
} }
@Override @Override
public ItemStack getOutput() { public ItemStack getOutput(DynamicRegistryManager registryManager) {
return shapedRecipe.getOutput(); return shapedRecipe.getOutput(registryManager);
} }
@Override @Override
@ -76,8 +77,8 @@ public class RollingMachineRecipe extends RebornRecipe {
} }
@Override @Override
public ItemStack craft(Inventory inv) { public ItemStack craft(Inventory inv, DynamicRegistryManager registryManager) {
return shapedRecipe.craft((CraftingInventory) inv); return shapedRecipe.craft((CraftingInventory) inv, registryManager);
} }
@Override @Override

View file

@ -88,7 +88,7 @@ public class IronAlloyFurnaceBlockEntity extends AbstractIronMachineBlockEntity
ItemStack itemstack = null; ItemStack itemstack = null;
for (RebornRecipe recipeType : ModRecipes.ALLOY_SMELTER.getRecipes(world)) { for (RebornRecipe recipeType : ModRecipes.ALLOY_SMELTER.getRecipes(world)) {
if (hasAllInputs(recipeType)) { if (hasAllInputs(recipeType)) {
List<ItemStack> outputs = recipeType.getOutputs(); List<ItemStack> outputs = recipeType.getOutputs(getWorld().getRegistryManager());
if(outputs.isEmpty()){ if(outputs.isEmpty()){
continue; continue;
@ -121,7 +121,7 @@ public class IronAlloyFurnaceBlockEntity extends AbstractIronMachineBlockEntity
return; return;
} }
ItemStack outputStack = currentRecipe.getOutputs().get(0); ItemStack outputStack = currentRecipe.getOutputs(getWorld().getRegistryManager()).get(0);
if (outputStack.isEmpty()) { if (outputStack.isEmpty()) {
return; return;
} }

View file

@ -105,7 +105,7 @@ public class IronFurnaceBlockEntity extends AbstractIronMachineBlockEntity imple
Recipe<?> matchingRecipe = refreshRecipe(stack); Recipe<?> matchingRecipe = refreshRecipe(stack);
if (matchingRecipe != null) { if (matchingRecipe != null) {
return matchingRecipe.getOutput().copy(); return matchingRecipe.getOutput(getWorld().getRegistryManager()).copy();
} }
return ItemStack.EMPTY; return ItemStack.EMPTY;

View file

@ -168,7 +168,7 @@ public class FusionControlComputerBlockEntity extends GenericMachineBlockEntity
* @return {@code boolean} True if we have all inputs and can fit output * @return {@code boolean} True if we have all inputs and can fit output
*/ */
private boolean validateRecipe(FusionReactorRecipe recipe) { private boolean validateRecipe(FusionReactorRecipe recipe) {
return hasAllInputs(recipe) && canFitStack(recipe.getOutputs().get(0), outputStackSlot, true); return hasAllInputs(recipe) && canFitStack(recipe.getOutputs(getWorld().getRegistryManager()).get(0), outputStackSlot, true);
} }
/** /**
@ -319,7 +319,7 @@ public class FusionControlComputerBlockEntity extends GenericMachineBlockEntity
} }
} }
} else if (craftingTickTime >= currentRecipe.getTime()) { } else if (craftingTickTime >= currentRecipe.getTime()) {
ItemStack result = currentRecipe.getOutputs().get(0); ItemStack result = currentRecipe.getOutputs(getWorld().getRegistryManager()).get(0);
if (canFitStack(result, outputStackSlot, true)) { if (canFitStack(result, outputStackSlot, true)) {
if (inventory.getStack(outputStackSlot).isEmpty()) { if (inventory.getStack(outputStackSlot).isEmpty()) {
inventory.setStack(outputStackSlot, result.copy()); inventory.setStack(outputStackSlot, result.copy());

View file

@ -160,7 +160,7 @@ public class AutoCraftingTableBlockEntity extends PowerAcceptorBlockEntity
if (!recipe.matches(crafting, world)) return false; if (!recipe.matches(crafting, world)) return false;
if (!hasOutputSpace(recipe.getOutput(), OUTPUT_SLOT)) return false; if (!hasOutputSpace(recipe.getOutput(getWorld().getRegistryManager()), OUTPUT_SLOT)) return false;
DefaultedList<ItemStack> remainingStacks = recipe.getRemainder(crafting); DefaultedList<ItemStack> remainingStacks = recipe.getRemainder(crafting);
for (ItemStack stack : remainingStacks) { for (ItemStack stack : remainingStacks) {
@ -225,11 +225,11 @@ public class AutoCraftingTableBlockEntity extends PowerAcceptorBlockEntity
} }
} }
ItemStack output = inventory.getStack(OUTPUT_SLOT); ItemStack output = inventory.getStack(OUTPUT_SLOT);
ItemStack outputStack = recipe.craft(getCraftingInventory()); ItemStack outputStack = recipe.craft(getCraftingInventory(), getWorld().getRegistryManager());
if (output.isEmpty()) { if (output.isEmpty()) {
inventory.setStack(OUTPUT_SLOT, outputStack.copy()); inventory.setStack(OUTPUT_SLOT, outputStack.copy());
} else { } else {
output.increment(recipe.getOutput().getCount()); output.increment(recipe.getOutput(getWorld().getRegistryManager()).getCount());
} }
return true; return true;
} }

View file

@ -96,7 +96,7 @@ public class ElectricFurnaceBlockEntity extends PowerAcceptorBlockEntity
} }
private boolean canAcceptOutput(SmeltingRecipe recipe, int slot) { private boolean canAcceptOutput(SmeltingRecipe recipe, int slot) {
ItemStack recipeOutput = recipe.getOutput(); ItemStack recipeOutput = recipe.getOutput(getWorld().getRegistryManager());
if (recipeOutput.isEmpty()) { if (recipeOutput.isEmpty()) {
return false; return false;
} }
@ -159,7 +159,7 @@ public class ElectricFurnaceBlockEntity extends PowerAcceptorBlockEntity
} }
ItemStack outputStack = inventory.getStack(outputSlot); ItemStack outputStack = inventory.getStack(outputSlot);
if (outputStack.isEmpty()) { if (outputStack.isEmpty()) {
inventory.setStack(outputSlot, recipe.getOutput().copy()); inventory.setStack(outputSlot, recipe.getOutput(getWorld().getRegistryManager()).copy());
} else { } else {
// Just increment. We already checked stack match and stack size // Just increment. We already checked stack match and stack size
outputStack.increment(1); outputStack.increment(1);

View file

@ -121,7 +121,7 @@ public class RollingMachineBlockEntity extends PowerAcceptorBlockEntity
craftMatrix = balanceResult.get(); craftMatrix = balanceResult.get();
} }
} }
currentRecipeOutput = currentRecipe.craft(craftMatrix); currentRecipeOutput = currentRecipe.craft(craftMatrix, getWorld().getRegistryManager());
} else { } else {
currentRecipeOutput = ItemStack.EMPTY; currentRecipeOutput = ItemStack.EMPTY;
} }
@ -329,7 +329,7 @@ public class RollingMachineBlockEntity extends PowerAcceptorBlockEntity
if (recipe == null) { if (recipe == null) {
return ItemStack.EMPTY; return ItemStack.EMPTY;
} }
return recipe.getOutput(); return recipe.getOutput(getWorld().getRegistryManager());
} }
public RollingMachineRecipe findMatchingRecipe(CraftingInventory inv, World world) { public RollingMachineRecipe findMatchingRecipe(CraftingInventory inv, World world) {

View file

@ -31,6 +31,7 @@ import net.minecraft.block.entity.BlockEntityTicker;
import net.minecraft.block.entity.BlockEntityType; import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.Fluid; import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.FluidState; import net.minecraft.fluid.FluidState;
@ -38,6 +39,7 @@ import net.minecraft.fluid.Fluids;
import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemPlacementContext;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.particle.ParticleTypes; import net.minecraft.particle.ParticleTypes;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents; import net.minecraft.sound.SoundEvents;
import net.minecraft.state.StateManager; import net.minecraft.state.StateManager;
@ -65,7 +67,7 @@ import techreborn.blockentity.cable.CableBlockEntity;
import techreborn.config.TechRebornConfig; import techreborn.config.TechRebornConfig;
import techreborn.init.ModSounds; import techreborn.init.ModSounds;
import techreborn.init.TRContent; import techreborn.init.TRContent;
import techreborn.utils.damageSources.ElectricalShockSource; import techreborn.init.TRDamageTypes;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -240,7 +242,8 @@ public class CableBlock extends BlockWithEntity implements Waterloggable {
if (type == TRContent.Cables.HV) { if (type == TRContent.Cables.HV) {
entity.setOnFireFor(1); entity.setOnFireFor(1);
} }
entity.damage(new ElectricalShockSource(), 1F);
entity.damage(TRDamageTypes.create(world, TRDamageTypes.ELECTRIC_SHOCK), 1F);
blockEntityCable.setEnergy(0); blockEntityCable.setEnergy(0);
} }
if (TechRebornConfig.uninsulatedElectrocutionSound) { if (TechRebornConfig.uninsulatedElectrocutionSound) {

View file

@ -27,9 +27,12 @@ package techreborn.blocks.generator;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemPlacementContext;
import net.minecraft.item.ItemUsageContext; import net.minecraft.item.ItemUsageContext;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.BlockHitResult;
@ -41,7 +44,7 @@ import reborncore.common.util.Torus;
import techreborn.blockentity.GuiType; import techreborn.blockentity.GuiType;
import techreborn.blockentity.machine.multiblock.FusionControlComputerBlockEntity; import techreborn.blockentity.machine.multiblock.FusionControlComputerBlockEntity;
import techreborn.init.TRContent; import techreborn.init.TRContent;
import techreborn.utils.damageSources.FusionDamageSource; import techreborn.init.TRDamageTypes;
import java.util.List; import java.util.List;
@ -87,7 +90,7 @@ public class BlockFusionControlComputer extends BlockMachineBase {
if (worldIn.getBlockEntity(pos) instanceof FusionControlComputerBlockEntity) { if (worldIn.getBlockEntity(pos) instanceof FusionControlComputerBlockEntity) {
if (((FusionControlComputerBlockEntity) worldIn.getBlockEntity(pos)).craftingTickTime != 0 if (((FusionControlComputerBlockEntity) worldIn.getBlockEntity(pos)).craftingTickTime != 0
&& ((FusionControlComputerBlockEntity) worldIn.getBlockEntity(pos)).isMultiblockValid()) { && ((FusionControlComputerBlockEntity) worldIn.getBlockEntity(pos)).isMultiblockValid()) {
entityIn.damage(new FusionDamageSource(), 200F); entityIn.damage(TRDamageTypes.create(worldIn, TRDamageTypes.FUSION), 200F);
} }
} }
} }

View file

@ -26,6 +26,7 @@ package techreborn.blocks.misc;
import net.minecraft.block.ButtonBlock; import net.minecraft.block.ButtonBlock;
import net.minecraft.sound.SoundEvents; import net.minecraft.sound.SoundEvents;
import techreborn.init.TRContent;
import techreborn.utils.InitUtils; import techreborn.utils.InitUtils;
/** /**
@ -34,6 +35,6 @@ import techreborn.utils.InitUtils;
public class RubberButtonBlock extends ButtonBlock { public class RubberButtonBlock extends ButtonBlock {
public RubberButtonBlock() { public RubberButtonBlock() {
super(InitUtils.setupRubberBlockSettings(true, 0.5F, 0.5F), 30, true, SoundEvents.BLOCK_WOODEN_BUTTON_CLICK_OFF, SoundEvents.BLOCK_WOODEN_BUTTON_CLICK_ON); super(InitUtils.setupRubberBlockSettings(true, 0.5F, 0.5F), TRContent.RUBBER_WOOD_SET_TYPE, 30, true);
} }
} }

View file

@ -26,6 +26,7 @@ package techreborn.blocks.misc;
import net.minecraft.block.DoorBlock; import net.minecraft.block.DoorBlock;
import net.minecraft.sound.SoundEvents; import net.minecraft.sound.SoundEvents;
import techreborn.init.TRContent;
import techreborn.utils.InitUtils; import techreborn.utils.InitUtils;
/** /**
@ -34,6 +35,6 @@ import techreborn.utils.InitUtils;
public class RubberDoorBlock extends DoorBlock { public class RubberDoorBlock extends DoorBlock {
public RubberDoorBlock() { public RubberDoorBlock() {
super(InitUtils.setupRubberBlockSettings(3.0F, 3.0F), SoundEvents.BLOCK_NETHER_WOOD_TRAPDOOR_CLOSE, SoundEvents.BLOCK_NETHER_WOOD_TRAPDOOR_OPEN); super(InitUtils.setupRubberBlockSettings(3.0F, 3.0F), TRContent.RUBBER_WOOD_SET_TYPE);
} }
} }

View file

@ -26,6 +26,7 @@ package techreborn.blocks.misc;
import net.minecraft.block.PressurePlateBlock; import net.minecraft.block.PressurePlateBlock;
import net.minecraft.sound.SoundEvents; import net.minecraft.sound.SoundEvents;
import techreborn.init.TRContent;
import techreborn.utils.InitUtils; import techreborn.utils.InitUtils;
/** /**
@ -34,7 +35,7 @@ import techreborn.utils.InitUtils;
public class RubberPressurePlateBlock extends PressurePlateBlock { public class RubberPressurePlateBlock extends PressurePlateBlock {
public RubberPressurePlateBlock() { public RubberPressurePlateBlock() {
super(PressurePlateBlock.ActivationRule.EVERYTHING, InitUtils.setupRubberBlockSettings(true, 0.5F, 0.5F), SoundEvents.BLOCK_NETHER_WOOD_PRESSURE_PLATE_CLICK_OFF, SoundEvents.BLOCK_NETHER_WOOD_PRESSURE_PLATE_CLICK_ON); super(PressurePlateBlock.ActivationRule.EVERYTHING, InitUtils.setupRubberBlockSettings(true, 0.5F, 0.5F), TRContent.RUBBER_WOOD_SET_TYPE);
} }
} }

View file

@ -26,6 +26,7 @@ package techreborn.blocks.misc;
import net.minecraft.block.TrapdoorBlock; import net.minecraft.block.TrapdoorBlock;
import net.minecraft.sound.SoundEvents; import net.minecraft.sound.SoundEvents;
import techreborn.init.TRContent;
import techreborn.utils.InitUtils; import techreborn.utils.InitUtils;
/** /**
@ -34,6 +35,6 @@ import techreborn.utils.InitUtils;
public class RubberTrapdoorBlock extends TrapdoorBlock { public class RubberTrapdoorBlock extends TrapdoorBlock {
public RubberTrapdoorBlock() { public RubberTrapdoorBlock() {
super(InitUtils.setupRubberBlockSettings(3.0F, 3.0F), SoundEvents.BLOCK_WOODEN_TRAPDOOR_CLOSE, SoundEvents.BLOCK_WOODEN_TRAPDOOR_OPEN); super(InitUtils.setupRubberBlockSettings(3.0F, 3.0F), TRContent.RUBBER_WOOD_SET_TYPE);
} }
} }

View file

@ -79,7 +79,7 @@ public class EntityNukePrimed extends TntEntity {
return; return;
} }
RebornExplosion nukeExplosion = new RebornExplosion(getBlockPos(), world, TechRebornConfig.nukeRadius); RebornExplosion nukeExplosion = new RebornExplosion(getBlockPos(), world, TechRebornConfig.nukeRadius);
nukeExplosion.setLivingBase(getCausingEntity()); nukeExplosion.setLivingBase(getOwner());
nukeExplosion.applyExplosion(); nukeExplosion.applyExplosion();
} }
} }

View file

@ -28,6 +28,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.transfer.v1.item.ItemStorage; import net.fabricmc.fabric.api.transfer.v1.item.ItemStorage;
import net.minecraft.block.*; import net.minecraft.block.*;
import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.Item.Settings; import net.minecraft.item.Item.Settings;
import net.minecraft.item.Items; import net.minecraft.item.Items;
@ -105,7 +106,7 @@ public class ModRegistry {
RebornRegistry.registerBlock(TRContent.RUBBER_SAPLING = InitUtils.setup(new BlockRubberSapling(), "rubber_sapling"), itemGroup); RebornRegistry.registerBlock(TRContent.RUBBER_SAPLING = InitUtils.setup(new BlockRubberSapling(), "rubber_sapling"), itemGroup);
RebornRegistry.registerBlock(TRContent.RUBBER_SLAB = InitUtils.setup(new SlabBlock(InitUtils.setupRubberBlockSettings(2.0F, 15.0F)), "rubber_slab"), itemGroup); RebornRegistry.registerBlock(TRContent.RUBBER_SLAB = InitUtils.setup(new SlabBlock(InitUtils.setupRubberBlockSettings(2.0F, 15.0F)), "rubber_slab"), itemGroup);
RebornRegistry.registerBlock(TRContent.RUBBER_FENCE = InitUtils.setup(new FenceBlock(InitUtils.setupRubberBlockSettings(2.0F, 15.0F)), "rubber_fence"), itemGroup); RebornRegistry.registerBlock(TRContent.RUBBER_FENCE = InitUtils.setup(new FenceBlock(InitUtils.setupRubberBlockSettings(2.0F, 15.0F)), "rubber_fence"), itemGroup);
RebornRegistry.registerBlock(TRContent.RUBBER_FENCE_GATE = InitUtils.setup(new FenceGateBlock(InitUtils.setupRubberBlockSettings(2.0F, 15.0F), SoundEvents.BLOCK_FENCE_GATE_CLOSE, SoundEvents.BLOCK_FENCE_GATE_OPEN), "rubber_fence_gate"), itemGroup); RebornRegistry.registerBlock(TRContent.RUBBER_FENCE_GATE = InitUtils.setup(new FenceGateBlock(InitUtils.setupRubberBlockSettings(2.0F, 15.0F), TRContent.RUBBER_WOOD_TYPE), "rubber_fence_gate"), itemGroup);
RebornRegistry.registerBlock(TRContent.RUBBER_STAIR = InitUtils.setup(new BlockRubberPlankStair(), "rubber_stair"), itemGroup); RebornRegistry.registerBlock(TRContent.RUBBER_STAIR = InitUtils.setup(new BlockRubberPlankStair(), "rubber_stair"), itemGroup);
RebornRegistry.registerBlock(TRContent.RUBBER_TRAPDOOR = InitUtils.setup(new RubberTrapdoorBlock(), "rubber_trapdoor"), itemGroup); RebornRegistry.registerBlock(TRContent.RUBBER_TRAPDOOR = InitUtils.setup(new RubberTrapdoorBlock(), "rubber_trapdoor"), itemGroup);
RebornRegistry.registerBlock(TRContent.RUBBER_BUTTON = InitUtils.setup(new RubberButtonBlock(), "rubber_button"), itemGroup); RebornRegistry.registerBlock(TRContent.RUBBER_BUTTON = InitUtils.setup(new RubberButtonBlock(), "rubber_button"), itemGroup);
@ -128,10 +129,10 @@ public class ModRegistry {
Arrays.stream(Parts.values()).forEach(value -> RebornRegistry.registerItem(value.asItem())); Arrays.stream(Parts.values()).forEach(value -> RebornRegistry.registerItem(value.asItem()));
Arrays.stream(Upgrades.values()).forEach(value -> RebornRegistry.registerItem(value.asItem())); Arrays.stream(Upgrades.values()).forEach(value -> RebornRegistry.registerItem(value.asItem()));
RebornRegistry.registerItem(TRContent.QUANTUM_HELMET = InitUtils.setup(new QuantumSuitItem(TRArmorMaterials.QUANTUM, EquipmentSlot.HEAD), "quantum_helmet")); RebornRegistry.registerItem(TRContent.QUANTUM_HELMET = InitUtils.setup(new QuantumSuitItem(TRArmorMaterials.QUANTUM, ArmorItem.Type.HELMET), "quantum_helmet"));
RebornRegistry.registerItem(TRContent.QUANTUM_CHESTPLATE = InitUtils.setup(new QuantumSuitItem(TRArmorMaterials.QUANTUM, EquipmentSlot.CHEST), "quantum_chestplate")); RebornRegistry.registerItem(TRContent.QUANTUM_CHESTPLATE = InitUtils.setup(new QuantumSuitItem(TRArmorMaterials.QUANTUM, ArmorItem.Type.CHESTPLATE), "quantum_chestplate"));
RebornRegistry.registerItem(TRContent.QUANTUM_LEGGINGS = InitUtils.setup(new QuantumSuitItem(TRArmorMaterials.QUANTUM, EquipmentSlot.LEGS), "quantum_leggings")); RebornRegistry.registerItem(TRContent.QUANTUM_LEGGINGS = InitUtils.setup(new QuantumSuitItem(TRArmorMaterials.QUANTUM, ArmorItem.Type.LEGGINGS), "quantum_leggings"));
RebornRegistry.registerItem(TRContent.QUANTUM_BOOTS = InitUtils.setup(new QuantumSuitItem(TRArmorMaterials.QUANTUM, EquipmentSlot.FEET), "quantum_boots")); RebornRegistry.registerItem(TRContent.QUANTUM_BOOTS = InitUtils.setup(new QuantumSuitItem(TRArmorMaterials.QUANTUM, ArmorItem.Type.BOOTS), "quantum_boots"));
// Gem armor & tools // Gem armor & tools
// Todo: repair with tags // Todo: repair with tags
@ -141,10 +142,10 @@ public class ModRegistry {
RebornRegistry.registerItem(TRContent.BRONZE_AXE = InitUtils.setup(new TRAxeItem(TRToolTier.BRONZE), "bronze_axe")); RebornRegistry.registerItem(TRContent.BRONZE_AXE = InitUtils.setup(new TRAxeItem(TRToolTier.BRONZE), "bronze_axe"));
RebornRegistry.registerItem(TRContent.BRONZE_HOE = InitUtils.setup(new TRHoeItem(TRToolTier.BRONZE), "bronze_hoe")); RebornRegistry.registerItem(TRContent.BRONZE_HOE = InitUtils.setup(new TRHoeItem(TRToolTier.BRONZE), "bronze_hoe"));
RebornRegistry.registerItem(TRContent.BRONZE_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.BRONZE, EquipmentSlot.HEAD), "bronze_helmet")); RebornRegistry.registerItem(TRContent.BRONZE_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.BRONZE, ArmorItem.Type.HELMET), "bronze_helmet"));
RebornRegistry.registerItem(TRContent.BRONZE_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.BRONZE, EquipmentSlot.CHEST), "bronze_chestplate")); RebornRegistry.registerItem(TRContent.BRONZE_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.BRONZE, ArmorItem.Type.CHESTPLATE), "bronze_chestplate"));
RebornRegistry.registerItem(TRContent.BRONZE_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.BRONZE, EquipmentSlot.LEGS), "bronze_leggings")); RebornRegistry.registerItem(TRContent.BRONZE_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.BRONZE, ArmorItem.Type.LEGGINGS), "bronze_leggings"));
RebornRegistry.registerItem(TRContent.BRONZE_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.BRONZE, EquipmentSlot.FEET), "bronze_boots")); RebornRegistry.registerItem(TRContent.BRONZE_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.BRONZE, ArmorItem.Type.BOOTS), "bronze_boots"));
RebornRegistry.registerItem(TRContent.RUBY_SWORD = InitUtils.setup(new TRSwordItem(TRToolTier.RUBY), "ruby_sword")); RebornRegistry.registerItem(TRContent.RUBY_SWORD = InitUtils.setup(new TRSwordItem(TRToolTier.RUBY), "ruby_sword"));
RebornRegistry.registerItem(TRContent.RUBY_PICKAXE = InitUtils.setup(new TRPickaxeItem(TRToolTier.RUBY), "ruby_pickaxe")); RebornRegistry.registerItem(TRContent.RUBY_PICKAXE = InitUtils.setup(new TRPickaxeItem(TRToolTier.RUBY), "ruby_pickaxe"));
@ -152,10 +153,10 @@ public class ModRegistry {
RebornRegistry.registerItem(TRContent.RUBY_AXE = InitUtils.setup(new TRAxeItem(TRToolTier.RUBY), "ruby_axe")); RebornRegistry.registerItem(TRContent.RUBY_AXE = InitUtils.setup(new TRAxeItem(TRToolTier.RUBY), "ruby_axe"));
RebornRegistry.registerItem(TRContent.RUBY_HOE = InitUtils.setup(new TRHoeItem(TRToolTier.RUBY), "ruby_hoe")); RebornRegistry.registerItem(TRContent.RUBY_HOE = InitUtils.setup(new TRHoeItem(TRToolTier.RUBY), "ruby_hoe"));
RebornRegistry.registerItem(TRContent.RUBY_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.RUBY, EquipmentSlot.HEAD), "ruby_helmet")); RebornRegistry.registerItem(TRContent.RUBY_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.RUBY, ArmorItem.Type.HELMET), "ruby_helmet"));
RebornRegistry.registerItem(TRContent.RUBY_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.RUBY, EquipmentSlot.CHEST), "ruby_chestplate")); RebornRegistry.registerItem(TRContent.RUBY_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.RUBY, ArmorItem.Type.CHESTPLATE), "ruby_chestplate"));
RebornRegistry.registerItem(TRContent.RUBY_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.RUBY, EquipmentSlot.LEGS), "ruby_leggings")); RebornRegistry.registerItem(TRContent.RUBY_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.RUBY, ArmorItem.Type.LEGGINGS), "ruby_leggings"));
RebornRegistry.registerItem(TRContent.RUBY_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.RUBY, EquipmentSlot.FEET), "ruby_boots")); RebornRegistry.registerItem(TRContent.RUBY_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.RUBY, ArmorItem.Type.BOOTS), "ruby_boots"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_SWORD = InitUtils.setup(new TRSwordItem(TRToolTier.SAPPHIRE), "sapphire_sword")); RebornRegistry.registerItem(TRContent.SAPPHIRE_SWORD = InitUtils.setup(new TRSwordItem(TRToolTier.SAPPHIRE), "sapphire_sword"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_PICKAXE = InitUtils.setup(new TRPickaxeItem(TRToolTier.SAPPHIRE), "sapphire_pickaxe")); RebornRegistry.registerItem(TRContent.SAPPHIRE_PICKAXE = InitUtils.setup(new TRPickaxeItem(TRToolTier.SAPPHIRE), "sapphire_pickaxe"));
@ -163,10 +164,10 @@ public class ModRegistry {
RebornRegistry.registerItem(TRContent.SAPPHIRE_AXE = InitUtils.setup(new TRAxeItem(TRToolTier.SAPPHIRE), "sapphire_axe")); RebornRegistry.registerItem(TRContent.SAPPHIRE_AXE = InitUtils.setup(new TRAxeItem(TRToolTier.SAPPHIRE), "sapphire_axe"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_HOE = InitUtils.setup(new TRHoeItem(TRToolTier.SAPPHIRE), "sapphire_hoe")); RebornRegistry.registerItem(TRContent.SAPPHIRE_HOE = InitUtils.setup(new TRHoeItem(TRToolTier.SAPPHIRE), "sapphire_hoe"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SAPPHIRE, EquipmentSlot.HEAD), "sapphire_helmet")); RebornRegistry.registerItem(TRContent.SAPPHIRE_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SAPPHIRE, ArmorItem.Type.HELMET), "sapphire_helmet"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SAPPHIRE, EquipmentSlot.CHEST), "sapphire_chestplate")); RebornRegistry.registerItem(TRContent.SAPPHIRE_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SAPPHIRE, ArmorItem.Type.CHESTPLATE), "sapphire_chestplate"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SAPPHIRE, EquipmentSlot.LEGS), "sapphire_leggings")); RebornRegistry.registerItem(TRContent.SAPPHIRE_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SAPPHIRE, ArmorItem.Type.LEGGINGS), "sapphire_leggings"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SAPPHIRE, EquipmentSlot.FEET), "sapphire_boots")); RebornRegistry.registerItem(TRContent.SAPPHIRE_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SAPPHIRE, ArmorItem.Type.BOOTS), "sapphire_boots"));
RebornRegistry.registerItem(TRContent.PERIDOT_SWORD = InitUtils.setup(new TRSwordItem(TRToolTier.PERIDOT), "peridot_sword")); RebornRegistry.registerItem(TRContent.PERIDOT_SWORD = InitUtils.setup(new TRSwordItem(TRToolTier.PERIDOT), "peridot_sword"));
RebornRegistry.registerItem(TRContent.PERIDOT_PICKAXE = InitUtils.setup(new TRPickaxeItem(TRToolTier.PERIDOT), "peridot_pickaxe")); RebornRegistry.registerItem(TRContent.PERIDOT_PICKAXE = InitUtils.setup(new TRPickaxeItem(TRToolTier.PERIDOT), "peridot_pickaxe"));
@ -174,20 +175,20 @@ public class ModRegistry {
RebornRegistry.registerItem(TRContent.PERIDOT_AXE = InitUtils.setup(new TRAxeItem(TRToolTier.PERIDOT), "peridot_axe")); RebornRegistry.registerItem(TRContent.PERIDOT_AXE = InitUtils.setup(new TRAxeItem(TRToolTier.PERIDOT), "peridot_axe"));
RebornRegistry.registerItem(TRContent.PERIDOT_HOE = InitUtils.setup(new TRHoeItem(TRToolTier.PERIDOT), "peridot_hoe")); RebornRegistry.registerItem(TRContent.PERIDOT_HOE = InitUtils.setup(new TRHoeItem(TRToolTier.PERIDOT), "peridot_hoe"));
RebornRegistry.registerItem(TRContent.PERIDOT_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.PERIDOT, EquipmentSlot.HEAD), "peridot_helmet")); RebornRegistry.registerItem(TRContent.PERIDOT_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.PERIDOT, ArmorItem.Type.HELMET), "peridot_helmet"));
RebornRegistry.registerItem(TRContent.PERIDOT_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.PERIDOT, EquipmentSlot.CHEST), "peridot_chestplate")); RebornRegistry.registerItem(TRContent.PERIDOT_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.PERIDOT, ArmorItem.Type.CHESTPLATE), "peridot_chestplate"));
RebornRegistry.registerItem(TRContent.PERIDOT_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.PERIDOT, EquipmentSlot.LEGS), "peridot_leggings")); RebornRegistry.registerItem(TRContent.PERIDOT_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.PERIDOT, ArmorItem.Type.LEGGINGS), "peridot_leggings"));
RebornRegistry.registerItem(TRContent.PERIDOT_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.PERIDOT, EquipmentSlot.FEET), "peridot_boots")); RebornRegistry.registerItem(TRContent.PERIDOT_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.PERIDOT, ArmorItem.Type.BOOTS), "peridot_boots"));
RebornRegistry.registerItem(TRContent.SILVER_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SILVER, EquipmentSlot.HEAD), "silver_helmet")); RebornRegistry.registerItem(TRContent.SILVER_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SILVER, ArmorItem.Type.HELMET), "silver_helmet"));
RebornRegistry.registerItem(TRContent.SILVER_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SILVER, EquipmentSlot.CHEST), "silver_chestplate")); RebornRegistry.registerItem(TRContent.SILVER_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SILVER, ArmorItem.Type.CHESTPLATE), "silver_chestplate"));
RebornRegistry.registerItem(TRContent.SILVER_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SILVER, EquipmentSlot.LEGS), "silver_leggings")); RebornRegistry.registerItem(TRContent.SILVER_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SILVER, ArmorItem.Type.LEGGINGS), "silver_leggings"));
RebornRegistry.registerItem(TRContent.SILVER_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SILVER, EquipmentSlot.FEET), "silver_boots")); RebornRegistry.registerItem(TRContent.SILVER_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.SILVER, ArmorItem.Type.BOOTS), "silver_boots"));
RebornRegistry.registerItem(TRContent.STEEL_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.STEEL, EquipmentSlot.HEAD), "steel_helmet")); RebornRegistry.registerItem(TRContent.STEEL_HELMET = InitUtils.setup(new TRArmourItem(TRArmorMaterials.STEEL, ArmorItem.Type.HELMET), "steel_helmet"));
RebornRegistry.registerItem(TRContent.STEEL_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.STEEL, EquipmentSlot.CHEST), "steel_chestplate")); RebornRegistry.registerItem(TRContent.STEEL_CHESTPLATE = InitUtils.setup(new TRArmourItem(TRArmorMaterials.STEEL, ArmorItem.Type.CHESTPLATE), "steel_chestplate"));
RebornRegistry.registerItem(TRContent.STEEL_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.STEEL, EquipmentSlot.LEGS), "steel_leggings")); RebornRegistry.registerItem(TRContent.STEEL_LEGGINGS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.STEEL, ArmorItem.Type.LEGGINGS), "steel_leggings"));
RebornRegistry.registerItem(TRContent.STEEL_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.STEEL, EquipmentSlot.FEET), "steel_boots")); RebornRegistry.registerItem(TRContent.STEEL_BOOTS = InitUtils.setup(new TRArmourItem(TRArmorMaterials.STEEL, ArmorItem.Type.BOOTS), "steel_boots"));
// Battery // Battery
RebornRegistry.registerItem(TRContent.RED_CELL_BATTERY = InitUtils.setup(new BatteryItem(TechRebornConfig.redCellBatteryMaxCharge, RcEnergyTier.LOW), "red_cell_battery")); RebornRegistry.registerItem(TRContent.RED_CELL_BATTERY = InitUtils.setup(new BatteryItem(TechRebornConfig.redCellBatteryMaxCharge, RcEnergyTier.LOW), "red_cell_battery"));

View file

@ -25,6 +25,7 @@
package techreborn.init; package techreborn.init;
import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.ArmorMaterial; import net.minecraft.item.ArmorMaterial;
import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.Ingredient;
import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvent;
@ -89,13 +90,13 @@ public enum TRArmorMaterials implements ArmorMaterial {
} }
@Override @Override
public int getDurability(EquipmentSlot slotIn) { public int getDurability(ArmorItem.Type type) {
return MAX_DAMAGE_ARRAY[slotIn.getEntitySlotId()] * maxDamageFactor; return MAX_DAMAGE_ARRAY[type.getEquipmentSlot().getEntitySlotId()] * maxDamageFactor;
} }
@Override @Override
public int getProtectionAmount(EquipmentSlot slotIn) { public int getProtection(ArmorItem.Type type) {
return damageReductionAmountArray[slotIn.getEntitySlotId()]; return damageReductionAmountArray[type.getEquipmentSlot().getEntitySlotId()];
} }
@Override @Override

View file

@ -26,12 +26,16 @@ package techreborn.init;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.object.builder.v1.block.type.BlockSetTypeRegistry;
import net.fabricmc.fabric.api.object.builder.v1.block.type.WoodTypeRegistry;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockSetType;
import net.minecraft.block.ExperienceDroppingBlock; import net.minecraft.block.ExperienceDroppingBlock;
import net.minecraft.block.Material; import net.minecraft.block.Material;
import net.minecraft.block.SlabBlock; import net.minecraft.block.SlabBlock;
import net.minecraft.block.StairsBlock; import net.minecraft.block.StairsBlock;
import net.minecraft.block.WallBlock; import net.minecraft.block.WallBlock;
import net.minecraft.block.WoodType;
import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemConvertible;
@ -152,6 +156,8 @@ import java.util.stream.Stream;
public class TRContent { public class TRContent {
public static Marker DATAGEN = MarkerFactory.getMarker("datagen"); public static Marker DATAGEN = MarkerFactory.getMarker("datagen");
public static BlockSetType RUBBER_WOOD_SET_TYPE = BlockSetTypeRegistry.registerWood(new Identifier(TechReborn.MOD_ID, "rubber_wood"));
public static WoodType RUBBER_WOOD_TYPE = WoodTypeRegistry.register(new Identifier(TechReborn.MOD_ID, "rubber_wood"), RUBBER_WOOD_SET_TYPE);
// Misc Blocks // Misc Blocks
public static Block COMPUTER_CUBE; public static Block COMPUTER_CUBE;

View file

@ -0,0 +1,20 @@
package techreborn.init;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.damage.DamageType;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.util.Identifier;
import net.minecraft.world.World;
import techreborn.TechReborn;
public final class TRDamageTypes {
public static final RegistryKey<DamageType> ELECTRIC_SHOCK = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, new Identifier(TechReborn.MOD_ID, "electric_shock"));
public static final RegistryKey<DamageType> FUSION = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, new Identifier(TechReborn.MOD_ID, "fusion"));
public static DamageSource create(World world, RegistryKey<DamageType> key) {
return new DamageSource(
world.getRegistryManager().get(RegistryKeys.DAMAGE_TYPE).entryOf(key)
);
}
}

View file

@ -59,7 +59,7 @@ public class TRDispenserBehavior {
public ItemStack dispenseSilently(BlockPointer pointer, ItemStack stack) { public ItemStack dispenseSilently(BlockPointer pointer, ItemStack stack) {
List<RebornRecipe> scrapboxRecipeList = ModRecipes.SCRAPBOX.getRecipes(pointer.getWorld()); List<RebornRecipe> scrapboxRecipeList = ModRecipes.SCRAPBOX.getRecipes(pointer.getWorld());
int random = Random.create().nextInt(scrapboxRecipeList.size()); int random = Random.create().nextInt(scrapboxRecipeList.size());
ItemStack out = scrapboxRecipeList.get(random).getOutputs().get(0).copy(); ItemStack out = scrapboxRecipeList.get(random).getOutputs(null).get(0).copy();
stack.split(1); stack.split(1);
Direction facing = pointer.getBlockState().get(DispenserBlock.FACING); Direction facing = pointer.getBlockState().get(DispenserBlock.FACING);

View file

@ -49,7 +49,7 @@ public class ScrapBoxItem extends Item {
if (!world.isClient) { if (!world.isClient) {
List<RebornRecipe> scrapboxRecipeList = ModRecipes.SCRAPBOX.getRecipes(world); List<RebornRecipe> scrapboxRecipeList = ModRecipes.SCRAPBOX.getRecipes(world);
int random = world.random.nextInt(scrapboxRecipeList.size()); int random = world.random.nextInt(scrapboxRecipeList.size());
ItemStack out = scrapboxRecipeList.get(random).getOutputs().get(0); ItemStack out = scrapboxRecipeList.get(random).getOutputs(world.getRegistryManager()).get(0);
WorldUtils.dropItem(out, world, player.getBlockPos()); WorldUtils.dropItem(out, world, player.getBlockPos());
stack.decrement(1); stack.decrement(1);
} }

View file

@ -41,7 +41,7 @@ public class BatpackItem extends ArmorItem implements RcEnergyItem {
public final RcEnergyTier tier; public final RcEnergyTier tier;
public BatpackItem(int maxCharge, ArmorMaterial material, RcEnergyTier tier) { public BatpackItem(int maxCharge, ArmorMaterial material, RcEnergyTier tier) {
super(material, EquipmentSlot.CHEST, new Settings().maxCount(1).maxDamage(-1)); super(material, Type.CHESTPLATE, new Settings().maxCount(1).maxDamage(-1));
this.maxCharge = maxCharge; this.maxCharge = maxCharge;
this.tier = tier; this.tier = tier;
} }

View file

@ -44,7 +44,7 @@ public class CloakingDeviceItem extends TRArmourItem implements RcEnergyItem, Ar
// 40M FE capacity with 10k FE\t charge rate // 40M FE capacity with 10k FE\t charge rate
public CloakingDeviceItem() { public CloakingDeviceItem() {
super(TRArmorMaterials.CLOAKING_DEVICE, EquipmentSlot.CHEST, new Item.Settings().maxDamage(-1).maxCount(1)); super(TRArmorMaterials.CLOAKING_DEVICE, Type.CHESTPLATE, new Item.Settings().maxDamage(-1).maxCount(1));
} }
@Override @Override

View file

@ -57,25 +57,25 @@ public class QuantumSuitItem extends TRArmourItem implements ArmorBlockEntityTic
public final boolean enableFlight = TechRebornConfig.quantumSuitEnableFlight; public final boolean enableFlight = TechRebornConfig.quantumSuitEnableFlight;
public QuantumSuitItem(ArmorMaterial material, EquipmentSlot slot) { public QuantumSuitItem(ArmorMaterial material, Type slot) {
super(material, slot, new Item.Settings().maxDamage(-1).maxCount(1)); super(material, slot, new Item.Settings().maxDamage(-1).maxCount(1));
} }
@Override @Override
public Multimap<EntityAttribute, EntityAttributeModifier> getAttributeModifiers(ItemStack stack, EquipmentSlot equipmentSlot) { public Multimap<EntityAttribute, EntityAttributeModifier> getAttributeModifiers(ItemStack stack, EquipmentSlot equipmentSlot) {
var attributes = ArrayListMultimap.create(super.getAttributeModifiers(stack, slot)); var attributes = ArrayListMultimap.create(super.getAttributeModifiers(stack, getSlotType()));
attributes.removeAll(EntityAttributes.GENERIC_MOVEMENT_SPEED); attributes.removeAll(EntityAttributes.GENERIC_MOVEMENT_SPEED);
if (this.slot == EquipmentSlot.LEGS && equipmentSlot == EquipmentSlot.LEGS && enableSprint) { if (this.getSlotType() == EquipmentSlot.LEGS && equipmentSlot == EquipmentSlot.LEGS && enableSprint) {
if (getStoredEnergy(stack) > sprintingCost) { if (getStoredEnergy(stack) > sprintingCost) {
attributes.put(EntityAttributes.GENERIC_MOVEMENT_SPEED, new EntityAttributeModifier(MODIFIERS[equipmentSlot.getEntitySlotId()], "Movement Speed", 0.15, EntityAttributeModifier.Operation.ADDITION)); attributes.put(EntityAttributes.GENERIC_MOVEMENT_SPEED, new EntityAttributeModifier(MODIFIERS[equipmentSlot.getEntitySlotId()], "Movement Speed", 0.15, EntityAttributeModifier.Operation.ADDITION));
} }
} }
if (equipmentSlot == this.slot && getStoredEnergy(stack) > 0) { if (equipmentSlot == this.getSlotType() && getStoredEnergy(stack) > 0) {
attributes.put(EntityAttributes.GENERIC_ARMOR, new EntityAttributeModifier(MODIFIERS[slot.getEntitySlotId()], "Armor modifier", 20, EntityAttributeModifier.Operation.ADDITION)); attributes.put(EntityAttributes.GENERIC_ARMOR, new EntityAttributeModifier(MODIFIERS[getSlotType().getEntitySlotId()], "Armor modifier", 20, EntityAttributeModifier.Operation.ADDITION));
attributes.put(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, new EntityAttributeModifier(MODIFIERS[slot.getEntitySlotId()], "Knockback modifier", 2, EntityAttributeModifier.Operation.ADDITION)); attributes.put(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, new EntityAttributeModifier(MODIFIERS[getSlotType().getEntitySlotId()], "Knockback modifier", 2, EntityAttributeModifier.Operation.ADDITION));
} }
return ImmutableMultimap.copyOf(attributes); return ImmutableMultimap.copyOf(attributes);
@ -83,7 +83,7 @@ public class QuantumSuitItem extends TRArmourItem implements ArmorBlockEntityTic
@Override @Override
public void tickArmor(ItemStack stack, PlayerEntity playerEntity) { public void tickArmor(ItemStack stack, PlayerEntity playerEntity) {
switch (this.slot) { switch (this.getSlotType()) {
case HEAD: case HEAD:
if (playerEntity.isSubmergedInWater()) { if (playerEntity.isSubmergedInWater()) {
if (tryUseEnergy(stack, breathingCost)) { if (tryUseEnergy(stack, breathingCost)) {
@ -132,7 +132,7 @@ public class QuantumSuitItem extends TRArmourItem implements ArmorBlockEntityTic
@Override @Override
public void onRemoved(PlayerEntity playerEntity) { public void onRemoved(PlayerEntity playerEntity) {
if (this.slot == EquipmentSlot.CHEST && enableFlight) { if (this.getSlotType() == EquipmentSlot.CHEST && enableFlight) {
if (!playerEntity.isCreative() && !playerEntity.isSpectator()) { if (!playerEntity.isCreative() && !playerEntity.isSpectator()) {
playerEntity.getAbilities().allowFlying = false; playerEntity.getAbilities().allowFlying = false;
playerEntity.getAbilities().flying = false; playerEntity.getAbilities().flying = false;

View file

@ -24,7 +24,6 @@
package techreborn.items.armor; package techreborn.items.armor;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ArmorItem; import net.minecraft.item.ArmorItem;
import net.minecraft.item.ArmorMaterial; import net.minecraft.item.ArmorMaterial;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -44,11 +43,11 @@ public class TRArmourItem extends ArmorItem {
UUID.fromString("2AD3F246-FEE1-4E67-B886-69FD380BB150") UUID.fromString("2AD3F246-FEE1-4E67-B886-69FD380BB150")
}; };
public TRArmourItem(ArmorMaterial material, EquipmentSlot slot) { public TRArmourItem(ArmorMaterial material, Type slot) {
this(material, slot, new Item.Settings()); this(material, slot, new Item.Settings());
} }
public TRArmourItem(ArmorMaterial material, EquipmentSlot slot, Item.Settings settings) { public TRArmourItem(ArmorMaterial material, Type slot, Item.Settings settings) {
super(material, slot, settings); super(material, slot, settings);
} }
} }

View file

@ -27,6 +27,7 @@ package techreborn.items.tool.industrial;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.damage.DamageSources;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -83,7 +84,7 @@ public class OmniToolItem extends MiningToolItem implements RcEnergyItem {
@Override @Override
public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) {
if (tryUseEnergy(stack, hitCost)) { if (tryUseEnergy(stack, hitCost)) {
target.damage(DamageSource.player((PlayerEntity) attacker), 8F); target.damage(target.getWorld().getDamageSources().playerAttack((PlayerEntity) attacker), 8F);
} }
return false; return false;
} }

View file

@ -44,15 +44,6 @@ public class RecipeUtils {
return recipe.getIngredients().size() == 1 && recipe.getIngredients().get(0).test(input); return recipe.getIngredients().size() == 1 && recipe.getIngredients().get(0).test(input);
} }
/**
* Used to get the matching output of a recipe type that only has 1 input
*/
public static <T extends Recipe<?>> ItemStack getMatchingRecipeOutput(World world, RecipeType<T> type, ItemStack input) {
return getMatchingRecipe(world, type, input)
.map(Recipe::getOutput)
.orElse(ItemStack.EMPTY);
}
public static <T extends Recipe<?>> List<Recipe<?>> getRecipes(World world, RecipeType<T> type) { public static <T extends Recipe<?>> List<Recipe<?>> getRecipes(World world, RecipeType<T> type) {
return world.getRecipeManager().values().stream().filter(iRecipe -> iRecipe.getType() == type).collect(Collectors.toList()); return world.getRecipeManager().values().stream().filter(iRecipe -> iRecipe.getType() == type).collect(Collectors.toList());
} }

View file

@ -1,36 +0,0 @@
/*
* This file is part of TechReborn, licensed under the MIT License (MIT).
*
* Copyright (c) 2020 TechReborn
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package techreborn.utils.damageSources;
import net.minecraft.entity.damage.DamageSource;
/**
* Created by modmuss50 on 06/03/2016.
*/
public class ElectricalShockSource extends DamageSource {
public ElectricalShockSource() {
super("shock");
}
}

View file

@ -1,36 +0,0 @@
/*
* This file is part of TechReborn, licensed under the MIT License (MIT).
*
* Copyright (c) 2020 TechReborn
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package techreborn.utils.damageSources;
import net.minecraft.entity.damage.DamageSource;
/**
* Created by modmuss50 on 05/03/2016.
*/
public class FusionDamageSource extends DamageSource {
public FusionDamageSource() {
super("fusion");
}
}

View file

@ -877,8 +877,8 @@
"techreborn.jei.category.generator.plasma": "Plasma Generator", "techreborn.jei.category.generator.plasma": "Plasma Generator",
"_comment20": "Death Messages", "_comment20": "Death Messages",
"death.attack.shock": "%s was electrocuted", "death.attack.electric_shock": "%s was electrocuted",
"death.attack.shock.player": "%s was electrocuted trying to outrun %s", "death.attack.electric_shock.player": "%s was electrocuted trying to outrun %s",
"_comment21": "Entities", "_comment21": "Entities",
"entity.nuke": "Nuke", "entity.nuke": "Nuke",

View file

@ -30,12 +30,12 @@
] ]
}, },
"depends": { "depends": {
"fabricloader": ">=0.14.11", "fabricloader": ">=0.14.15",
"fabric-api": ">=0.68.1", "fabric-api": ">=0.75.0",
"reborncore": "*", "reborncore": "*",
"team_reborn_energy": ">=2.3.0", "team_reborn_energy": ">=2.3.0",
"fabric-biome-api-v1": ">=3.0.0", "fabric-biome-api-v1": ">=3.0.0",
"minecraft": ">=1.19.3- <1.19.4-" "minecraft": ">=1.19.4- <1.19.5-"
}, },
"accessWidener": "techreborn.accesswidener", "accessWidener": "techreborn.accesswidener",
"authors": [ "authors": [