1.19.3 port (#3074)

* Start on 1.19.3 port

* Client runs, kinda

* Fix crash when opening item group

* Fix dynamic models

* Add atlas config for slot sprites

* Ore :)

* Rubber tree's, lakes and ore cleanup

* Add blocks to item group

* Fix rubber tree sapling

* added vanilla creative and missing peridot pickaxe (#3076)

* added vanilla creative and missing peridot pickaxe

* some small tweaks

Co-authored-by: ayutac <fly.high.android@gmail.com>

* added bamboo saw mill datagen recipes (#3077)

* added bamboo saw mill datagen recipes

* fixed datagen error

Co-authored-by: ayutac <fly.high.android@gmail.com>

* 1.19.3-rc1

* 1.19.3 port villager housing (#3082)

* added NBTs for the houses

* added the houses, theoretically

* added the houses, practically

* made house gen configurable

Co-authored-by: ayutac <fly.high.android@gmail.com>

* Fixes #3083

* reordered TR creative tab and small tweaks to the rest (#3081)

* reordered TR creative tab and small tweaks to the rest

* small bugfix

Co-authored-by: ayutac <fly.high.android@gmail.com>

* 1.19.3

* Bump version

Co-authored-by: Ayutac <skoch02@students.uni-mainz.de>
Co-authored-by: ayutac <fly.high.android@gmail.com>
This commit is contained in:
modmuss50 2022-12-07 16:28:29 +00:00 committed by GitHub
parent 7b7fba96c5
commit 573ba92920
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
162 changed files with 2049 additions and 1265 deletions

View file

@ -17,7 +17,7 @@ curseforge {
id = "237903"
changelog = ENV.CHANGELOG ?: "No changelog provided"
releaseType = ENV.RELEASE_CHANNEL ?: "release"
addGameVersion "1.19.2"
addGameVersion "1.19.3"
addGameVersion "Fabric"
mainArtifact(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar"))

View file

@ -30,11 +30,13 @@ import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback;
import net.minecraft.screen.PlayerScreenHandler;
import reborncore.api.blockentity.UnloadHandler;
import reborncore.client.*;
import reborncore.common.screen.ScreenIcons;
import reborncore.client.BlockOutlineRenderer;
import reborncore.client.ClientBoundPacketHandlers;
import reborncore.client.HolidayRenderManager;
import reborncore.client.ItemStackRenderer;
import reborncore.client.RebornFluidRenderManager;
import reborncore.client.StackToolTipHandler;
import java.util.Locale;
@ -44,12 +46,6 @@ public class RebornCoreClient implements ClientModInitializer {
public void onInitializeClient() {
RebornFluidRenderManager.setupClient();
HolidayRenderManager.setupClient();
ClientSpriteRegistryCallback.event(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE).register((atlasTexture, registry) -> {
registry.register(ScreenIcons.HEAD);
registry.register(ScreenIcons.CHEST);
registry.register(ScreenIcons.LEGS);
registry.register(ScreenIcons.FEET);
});
ClientBoundPacketHandlers.init();
HudRenderCallback.EVENT.register(new ItemStackRenderer());
ItemTooltipCallback.EVENT.register(new StackToolTipHandler());

View file

@ -37,7 +37,7 @@ import net.minecraft.client.render.entity.model.PlayerEntityModel;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import reborncore.common.RebornCoreConfig;
import reborncore.common.util.CalenderUtils;
@ -74,8 +74,8 @@ public class HolidayRenderManager {
float yaw = player.prevYaw + (player.getYaw() - player.prevYaw) * tickDelta - (player.prevBodyYaw + (player.bodyYaw - player.prevBodyYaw) * tickDelta);
float pitch = player.prevPitch + (player.getPitch() - player.prevPitch) * tickDelta;
matrixStack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(yaw));
matrixStack.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(pitch));
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(yaw));
matrixStack.multiply(RotationAxis.POSITIVE_X.rotationDegrees(pitch));
santaHat.render(matrixStack, vertexConsumer, i, LivingEntityRenderer.getOverlay(player, 0.0F), 1F, 1F, 1F, 1F);
matrixStack.pop();
}

View file

@ -35,9 +35,10 @@ import net.minecraft.client.render.DiffuseLighting;
import net.minecraft.client.texture.NativeImage;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.Matrix4f;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import org.joml.Matrix4f;
import org.lwjgl.opengl.GL12;
import java.nio.file.Files;
@ -56,14 +57,15 @@ public class ItemStackRenderer implements HudRenderCallback {
public void onHudRender(MatrixStack matrixStack, float v) {
if (!ItemStackRenderManager.RENDER_QUEUE.isEmpty()) {
ItemStack itemStack = ItemStackRenderManager.RENDER_QUEUE.remove();
Identifier id = Registry.ITEM.getId(itemStack.getItem());
Identifier id = Registries.ITEM.getId(itemStack.getItem());
MinecraftClient.getInstance().textRenderer.draw(matrixStack, "Rendering " + id + ", " + ItemStackRenderManager.RENDER_QUEUE.size() + " items left", 5, 5, -1);
export(id, itemStack);
}
}
private void export(Identifier identifier, ItemStack item) {
RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix(0, 16, 0, 16, 1000, 3000));
Matrix4f matrix4f = new Matrix4f().setOrtho(0, 16, 0, 16, 1000, 3000);
RenderSystem.setProjectionMatrix(matrix4f);
MatrixStack stack = RenderSystem.getModelViewStack();
stack.loadIdentity();
stack.translate(0, 0, -2000);

View file

@ -25,16 +25,13 @@
package reborncore.client;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry;
import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.fabric.api.resource.ResourceReloadListenerKeys;
import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
import net.minecraft.client.texture.Sprite;
import net.minecraft.client.texture.SpriteAtlasTexture;
import net.minecraft.fluid.Fluid;
import net.minecraft.resource.ResourceManager;
import net.minecraft.resource.ResourceType;
import net.minecraft.screen.PlayerScreenHandler;
import net.minecraft.util.Identifier;
import reborncore.common.fluid.FluidSettings;
import reborncore.common.fluid.RebornFluid;
@ -45,15 +42,13 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
public class RebornFluidRenderManager implements ClientSpriteRegistryCallback, SimpleSynchronousResourceReloadListener {
public class RebornFluidRenderManager implements SimpleSynchronousResourceReloadListener {
private static final Map<Fluid, TemporaryLazy<Sprite[]>> spriteMap = new HashMap<>();
public static void setupClient() {
RebornFluidRenderManager rebornFluidRenderManager = new RebornFluidRenderManager();
ClientSpriteRegistryCallback.event(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE).register(rebornFluidRenderManager);
ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener(rebornFluidRenderManager);
RebornFluidManager.getFluidStream().forEach(RebornFluidRenderManager::setupFluidRenderer);
}
@ -70,14 +65,6 @@ public class RebornFluidRenderManager implements ClientSpriteRegistryCallback, S
FluidRenderHandlerRegistry.INSTANCE.register(fluid, (extendedBlockView, blockPos, fluidState) -> sprites.get());
}
@Override
public void registerSprites(SpriteAtlasTexture spriteAtlasTexture, Registry registry) {
Stream.concat(
RebornFluidManager.getFluidStream().map(rebornFluid -> rebornFluid.getFluidSettings().getFlowingTexture()),
RebornFluidManager.getFluidStream().map(rebornFluid -> rebornFluid.getFluidSettings().getStillTexture())
).forEach(registry::register);
}
@Override
public Identifier getFabricId() {
return new Identifier("reborncore", "fluid_render_manager");

View file

@ -150,7 +150,7 @@ public class RenderUtil {
RenderSystem.disableTexture();
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.setShader(GameRenderer::getPositionColorShader);
RenderSystem.setShader(GameRenderer::getPositionColorProgram);
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder bufferBuilder = tessellator.getBuffer();

View file

@ -1,98 +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.client.gui;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import reborncore.common.util.Color;
public class GuiButtonCustomTexture extends ButtonWidget {
public int textureU;
public int textureV;
public String textureName;
public String linkedPage;
public Text name;
public String imagePrefix = "techreborn:textures/manual/elements/";
public int buttonHeight;
public int buttonWidth;
public int buttonU;
public int buttonV;
public int textureH;
public int textureW;
public GuiButtonCustomTexture(int xPos, int yPos, int u, int v, int buttonWidth, int buttonHeight,
String textureName, String linkedPage, Text name, int buttonU, int buttonV, int textureH, int textureW, ButtonWidget.PressAction pressAction) {
super(xPos, yPos, buttonWidth, buttonHeight, Text.empty(), pressAction);
this.textureU = u;
this.textureV = v;
this.textureName = textureName;
this.name = name;
this.linkedPage = linkedPage;
this.buttonHeight = height;
this.buttonWidth = width;
this.buttonU = buttonU;
this.buttonV = buttonV;
this.textureH = textureH;
this.textureW = textureW;
}
public void drawButton(MatrixStack matrixStack, MinecraftClient mc, int mouseX, int mouseY) {
if (this.visible) {
boolean flag = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width
&& mouseY < this.y + this.height;
RenderSystem.setShaderTexture(0, WIDGETS_TEXTURE);
int u = textureU;
int v = textureV;
if (flag) {
u += width;
matrixStack.push();
RenderSystem.setShaderColor(0f, 0f, 0f, 1f);
this.drawTexture(matrixStack, this.x, this.y, u, v, width, height);
matrixStack.pop();
}
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
renderImage(matrixStack, this.x, this.y);
drawTextWithShadow(matrixStack, mc.textRenderer, this.name, this.x + 20, this.y + 3,
Color.WHITE.getColor());
}
}
public void renderImage(MatrixStack matrixStack, int offsetX, int offsetY) {
RenderSystem.setShaderTexture(0, new Identifier(imagePrefix + this.textureName + ".png"));
RenderSystem.enableBlend();
RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
RenderSystem.setShaderColor(1F, 1F, 1F, 1F);
drawTexture(matrixStack, offsetX, offsetY, this.buttonU, this.buttonV, this.textureW, this.textureH);
RenderSystem.disableBlend();
}
}

View file

@ -1,81 +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.client.gui;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import reborncore.common.util.Color;
public class GuiButtonItemTexture extends ButtonWidget {
public int textureU;
public int textureV;
public ItemStack itemstack;
public String LINKED_PAGE;
public Text NAME;
public GuiButtonItemTexture(int xPos, int yPos, int u, int v, int width, int height, ItemStack stack,
String linkedPage, Text name, ButtonWidget.PressAction pressAction) {
super(xPos, yPos, width, height, Text.empty(), pressAction);
textureU = u;
textureV = v;
itemstack = stack;
NAME = name;
this.LINKED_PAGE = linkedPage;
}
@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float ticks) {
if (this.visible) {
MinecraftClient mc = MinecraftClient.getInstance();
boolean flag = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width
&& mouseY < this.y + this.height;
RenderSystem.setShaderTexture(0, WIDGETS_TEXTURE);
int u = textureU;
int v = textureV;
if (flag) {
u += mc.textRenderer.getWidth(this.NAME) + 25;
v += mc.textRenderer.getWidth(this.NAME) + 25;
matrixStack.push();
RenderSystem.setShaderColor(0f, 0f, 0f, 1f);
this.drawTexture(matrixStack, this.x, this.y, u, v, mc.textRenderer.getWidth(this.NAME) + 25, height);
matrixStack.pop();
}
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
//GL11.glEnable(32826); RESCALE_NORMAL_EXT
// DiffuseLighting.enable(); FIXME 1.17
ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer();
itemRenderer.renderGuiItemIcon(itemstack, this.x, this.y);
this.drawTextWithShadow(matrixStack, mc.textRenderer, this.NAME, this.x + 20, this.y + 3,
Color.WHITE.getColor());
}
}
}

View file

@ -278,7 +278,8 @@ public class GuiBase<T extends ScreenHandler> extends HandledScreen<T> {
for (Selectable selectable : selectables) {
if (selectable instanceof ClickableWidget clickable) {
if (clickable.isHovered()) {
clickable.renderTooltip(matrixStack, mouseX, mouseY);
// TODO 1.19.3
// clickable.renderTooltip(matrixStack, mouseX, mouseY);
break;
}
}

View file

@ -37,9 +37,9 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.PlayerScreenHandler;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Quaternion;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.world.World;
import org.joml.Quaternionf;
import reborncore.RebornCore;
import reborncore.client.ClientNetworkManager;
import reborncore.client.gui.GuiUtil;
@ -75,12 +75,12 @@ public class FluidConfigPopupElement extends ElementBase {
BlockRenderManager dispatcher = MinecraftClient.getInstance().getBlockRenderManager();
BakedModel model = dispatcher.getModels().getModel(state.getBlock().getDefaultState());
MinecraftClient.getInstance().getTextureManager().bindTexture(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE);
drawState(gui, world, model, actualState, pos, dispatcher, 4, 23, Vec3f.POSITIVE_Y.getDegreesQuaternion(90F)); //left
drawState(gui, world, model, actualState, pos, dispatcher, 23, 4, Vec3f.NEGATIVE_X.getDegreesQuaternion(90F)); //top
drawState(gui, world, model, actualState, pos, dispatcher, 4, 23, RotationAxis.POSITIVE_Y.rotationDegrees(90F)); //left
drawState(gui, world, model, actualState, pos, dispatcher, 23, 4, RotationAxis.NEGATIVE_X.rotationDegrees(90F)); //top
drawState(gui, world, model, actualState, pos, dispatcher, 23, 23, null); //centre
drawState(gui, world, model, actualState, pos, dispatcher, 23, 26, Vec3f.POSITIVE_X.getDegreesQuaternion(90F)); //bottom
drawState(gui, world, model, actualState, pos, dispatcher, 42, 23, Vec3f.POSITIVE_Y.getDegreesQuaternion(90F)); //right
drawState(gui, world, model, actualState, pos, dispatcher, 26, 42, Vec3f.POSITIVE_Y.getDegreesQuaternion(180F)); //back
drawState(gui, world, model, actualState, pos, dispatcher, 23, 26, RotationAxis.POSITIVE_X.rotationDegrees(90F)); //bottom
drawState(gui, world, model, actualState, pos, dispatcher, 42, 23, RotationAxis.POSITIVE_Y.rotationDegrees(90F)); //right
drawState(gui, world, model, actualState, pos, dispatcher, 26, 42, RotationAxis.POSITIVE_Y.rotationDegrees(180F)); //back
drawSateColor(matrixStack, gui.getMachine(), MachineFacing.UP.getFacing(machine), 22, -1, gui);
drawSateColor(matrixStack, gui.getMachine(), MachineFacing.FRONT.getFacing(machine), 22, 18, gui);
@ -178,7 +178,7 @@ public class FluidConfigPopupElement extends ElementBase {
BlockRenderManager dispatcher,
int x,
int y,
Quaternion quaternion) {
Quaternionf quaternion) {
MatrixStack matrixStack = new MatrixStack();
matrixStack.push();

View file

@ -37,9 +37,9 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.PlayerScreenHandler;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Quaternion;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.world.World;
import org.joml.Quaternionf;
import reborncore.RebornCore;
import reborncore.client.ClientNetworkManager;
import reborncore.client.gui.GuiUtil;
@ -79,12 +79,12 @@ public class SlotConfigPopupElement extends ElementBase {
BlockRenderManager dispatcher = MinecraftClient.getInstance().getBlockRenderManager();
BakedModel model = dispatcher.getModels().getModel(state.getBlock().getDefaultState());
MinecraftClient.getInstance().getTextureManager().bindTexture(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE);
drawState(gui, world, model, actualState, pos, dispatcher, 4, 23, Vec3f.POSITIVE_Y.getDegreesQuaternion(90F)); //left
drawState(gui, world, model, actualState, pos, dispatcher, 23, 4, Vec3f.NEGATIVE_X.getDegreesQuaternion(90F)); //top
drawState(gui, world, model, actualState, pos, dispatcher, 4, 23, RotationAxis.POSITIVE_Y.rotationDegrees(90F)); //left
drawState(gui, world, model, actualState, pos, dispatcher, 23, 4, RotationAxis.NEGATIVE_X.rotationDegrees(90F)); //top
drawState(gui, world, model, actualState, pos, dispatcher, 23, 23, null); //centre
drawState(gui, world, model, actualState, pos, dispatcher, 23, 26, Vec3f.POSITIVE_X.getDegreesQuaternion(90F)); //bottom
drawState(gui, world, model, actualState, pos, dispatcher, 42, 23, Vec3f.POSITIVE_Y.getDegreesQuaternion(90F)); //right
drawState(gui, world, model, actualState, pos, dispatcher, 26, 42, Vec3f.POSITIVE_Y.getDegreesQuaternion(180F)); //back
drawState(gui, world, model, actualState, pos, dispatcher, 23, 26, RotationAxis.POSITIVE_X.rotationDegrees(90F)); //bottom
drawState(gui, world, model, actualState, pos, dispatcher, 42, 23, RotationAxis.POSITIVE_Y.rotationDegrees(90F)); //right
drawState(gui, world, model, actualState, pos, dispatcher, 26, 42, RotationAxis.POSITIVE_Y.rotationDegrees(180F)); //back
drawSlotSateColor(matrixStack, gui.getMachine(), MachineFacing.UP.getFacing(machine), id, 22, -1, gui);
drawSlotSateColor(matrixStack, gui.getMachine(), MachineFacing.FRONT.getFacing(machine), id, 22, 18, gui);
@ -184,7 +184,7 @@ public class SlotConfigPopupElement extends ElementBase {
BlockRenderManager dispatcher,
int x,
int y,
Quaternion quaternion) {
Quaternionf quaternion) {
MatrixStack matrixStack = new MatrixStack();
matrixStack.push();

View file

@ -25,19 +25,22 @@
package reborncore.client.gui.builder.widget;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import reborncore.common.misc.TriConsumer;
import java.util.function.Supplier;
public class GuiButtonExtended extends ButtonWidget {
private TriConsumer<GuiButtonExtended, Double, Double> clickHandler;
public GuiButtonExtended(int x, int y, Text buttonText, ButtonWidget.PressAction pressAction) {
super(x, y, 20, 200, buttonText, pressAction);
super(x, y, 20, 200, buttonText, pressAction, narrationSupplier());
}
public GuiButtonExtended(int x, int y, int widthIn, int heightIn, Text buttonText, ButtonWidget.PressAction pressAction) {
super(x, y, widthIn, heightIn, buttonText, pressAction);
super(x, y, widthIn, heightIn, buttonText, pressAction, narrationSupplier());
}
public GuiButtonExtended clickHandler(TriConsumer<GuiButtonExtended, Double, Double> consumer) {
@ -52,4 +55,11 @@ public class GuiButtonExtended extends ButtonWidget {
}
super.onClick(mouseX, mouseY);
}
private static NarrationSupplier narrationSupplier() {
return textSupplier -> {
// TODO 1.19.3
return null;
};
}
}

View file

@ -34,7 +34,7 @@ public class GuiButtonSimple extends ButtonWidget {
*/
@Deprecated
public GuiButtonSimple(int x, int y, Text buttonText, ButtonWidget.PressAction pressAction) {
super(x, y, 20, 200, buttonText, pressAction);
super(x, y, 20, 200, buttonText, pressAction, narrationSupplier());
}
/**
@ -42,6 +42,13 @@ public class GuiButtonSimple extends ButtonWidget {
*/
@Deprecated
public GuiButtonSimple(int x, int y, int widthIn, int heightIn, Text buttonText, ButtonWidget.PressAction pressAction) {
super(x, y, widthIn, heightIn, buttonText, pressAction);
super(x, y, widthIn, heightIn, buttonText, pressAction, narrationSupplier());
}
private static NarrationSupplier narrationSupplier() {
return textSupplier -> {
// TODO 1.19.3
return null;
};
}
}

View file

@ -50,16 +50,16 @@ public class GuiButtonUpDown extends GuiButtonExtended {
RenderSystem.setShaderTexture(0, gui.builder.getResourceLocation());
switch (type) {
case FASTFORWARD:
gui.drawTexture(matrixStack, x, y, 174, 74, 12, 12);
gui.drawTexture(matrixStack, getX(), getY(), 174, 74, 12, 12);
break;
case FORWARD:
gui.drawTexture(matrixStack, x, y, 174, 86, 12, 12);
gui.drawTexture(matrixStack, getX(), getY(), 174, 86, 12, 12);
break;
case REWIND:
gui.drawTexture(matrixStack, x, y, 174, 98, 12, 12);
gui.drawTexture(matrixStack, getX(), getY(), 174, 98, 12, 12);
break;
case FASTREWIND:
gui.drawTexture(matrixStack, x, y, 174, 110, 12, 12);
gui.drawTexture(matrixStack, getX(), getY(), 174, 110, 12, 12);
break;
default:
break;

View file

@ -1,61 +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.client.gui.componets;
public class BaseTextures {
//
// private static final ResourceLocation baseTexture = new ResourceLocation("reborncore", "textures/gui/base.png");
//
// public GuiTexture background;
// public GuiTexture slot;
// public GuiTexture burnBase;
// public GuiTexture burnOverlay;
// public GuiTexture powerBase;
// public GuiTexture powerOverlay;
// public GuiTexture progressBase;
// public GuiTexture progressOverlay;
// public GuiTexture tank;
// public GuiTexture tankBase;
// public GuiTexture tankScale;
// public GuiTexture powerBaseOld;
// public GuiTexture powerOverlayOld;
//
// public BaseTextures()
// {
// background = new GuiTexture(baseTexture, 176, 166, 0, 0);
// slot = new GuiTexture(baseTexture, 18, 18, 176, 31);
// burnBase = new GuiTexture(baseTexture, 14, 14, 176, 0);
// burnOverlay = new GuiTexture(baseTexture, 13, 13, 176, 50);
// powerBase = new GuiTexture(baseTexture, 7, 13, 190, 0);
// powerOverlay = new GuiTexture(baseTexture, 7, 13, 197, 0);
// progressBase = new GuiTexture(baseTexture, 22, 15, 200, 14);
// progressOverlay = new GuiTexture(baseTexture, 22, 16, 177, 14);
// tank = new GuiTexture(baseTexture, 20, 55, 176, 63);
// tankBase = new GuiTexture(baseTexture, 20, 55, 196, 63);
// tankScale = new GuiTexture(baseTexture, 20, 55, 216, 63);
// powerBaseOld = new GuiTexture(baseTexture, 32, 17, 224, 13);
// powerOverlayOld = new GuiTexture(baseTexture, 32, 17, 224, 30);
// }
}

View file

@ -1,70 +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.client.gui.componets;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
public class GuiHiddenButton extends ButtonWidget {
public GuiHiddenButton(int xPosition, int yPosition, Text displayString) {
super(xPosition, yPosition, 0, 0, displayString, var1 -> {
});
}
public GuiHiddenButton(int id, int xPosition, int yPosition, int width, int height, Text displayString) {
super(xPosition, yPosition, width, height, displayString, var1 -> {
});
}
@Override
public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
if (this.visible) {
TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
RenderSystem.setShaderTexture(0, WIDGETS_TEXTURE);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
this.hovered = mouseX >= this.x && mouseY >= this.y
&& mouseX < this.x + this.width && mouseY < this.y + this.height;
RenderSystem.enableBlend();
RenderSystem.blendFuncSeparate(770, 771, 1, 0);
RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
int l = 14737632;
if (!this.active) {
l = 10526880;
} else if (this.isHovered()) {
l = 16777120;
}
this.drawTextWithShadow(matrixStack, textRenderer, this.getMessage(), this.x + this.width / 2,
this.y + (this.height - 8) / 2, l);
}
}
}

View file

@ -721,7 +721,7 @@ public class GuiBuilder {
int color = FluidVariantRendering.getColor(fluid.getVariant());
final int drawHeight = (int) (fluid.getAmount().getRawValue() / (maxCapacity * 1F) * height);
final int iconHeight = sprite.getHeight();
final int iconHeight = sprite.getContents().getHeight();
int offsetHeight = drawHeight;
RenderSystem.setShaderColor((color >> 16 & 255) / 255.0F, (float) (color >> 8 & 255) / 255.0F, (float) (color & 255) / 255.0F, 1F);

View file

@ -0,0 +1,20 @@
{
"sources": [
{
"type": "single",
"resource": "reborncore:gui/slot_sprites/armour_head"
},
{
"type": "single",
"resource": "reborncore:gui/slot_sprites/armour_chest"
},
{
"type": "single",
"resource": "reborncore:gui/slot_sprites/armour_legs"
},
{
"type": "single",
"resource": "reborncore:gui/slot_sprites/armour_feet"
}
]
}

View file

@ -27,8 +27,9 @@ package reborncore;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import org.apache.commons.lang3.Validate;
import java.util.HashMap;
@ -49,15 +50,15 @@ public class RebornRegistry {
* @param name {@link Identifier} Registry name for block and item
*/
public static void registerBlock(Block block, Item.Settings builder, Identifier name) {
Registry.register(Registry.BLOCK, name, block);
Registry.register(Registries.BLOCK, name, block);
BlockItem itemBlock = new BlockItem(block, builder);
Registry.register(Registry.ITEM, name, itemBlock);
Registry.register(Registries.ITEM, name, itemBlock);
}
public static void registerBlock(Block block, Function<Block, BlockItem> blockItemFunction, Identifier name) {
Registry.register(Registry.BLOCK, name, block);
Registry.register(Registries.BLOCK, name, block);
BlockItem itemBlock = blockItemFunction.apply(block);
Registry.register(Registry.ITEM, name, itemBlock);
Registry.register(Registries.ITEM, name, itemBlock);
}
/**
@ -86,7 +87,7 @@ public class RebornRegistry {
*/
public static void registerBlockNoItem(Block block) {
Validate.isTrue(objIdentMap.containsKey(block));
Registry.register(Registry.BLOCK, objIdentMap.get(block), block);
Registry.register(Registries.BLOCK, objIdentMap.get(block), block);
}
@ -97,7 +98,7 @@ public class RebornRegistry {
* @param name {@link Identifier} Registry name for item
*/
public static void registerItem(Item item, Identifier name) {
Registry.register(Registry.ITEM, name, item);
Registry.register(Registries.ITEM, name, item);
}
/**

View file

@ -38,13 +38,14 @@ import net.minecraft.command.argument.EntityArgumentType;
import net.minecraft.command.argument.ItemStackArgumentType;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerChunkManager;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.Text;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import net.minecraft.world.chunk.ChunkStatus;
import reborncore.common.network.ClientBoundPackets;
import reborncore.common.network.IdentifiedPacket;
@ -157,9 +158,9 @@ public class RebornCoreCommands {
private static int renderMod(CommandContext<ServerCommandSource> ctx) {
String modid = StringArgumentType.getString(ctx, "modid");
List<ItemStack> list = Registry.ITEM.getIds().stream()
List<ItemStack> list = Registries.ITEM.getIds().stream()
.filter(identifier -> identifier.getNamespace().equals(modid))
.map(Registry.ITEM::get)
.map(Registries.ITEM::get)
.map(ItemStack::new)
.collect(Collectors.toList());

View file

@ -36,7 +36,7 @@ import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.registry.RegistryKey;
import net.minecraft.world.PersistentState;
import net.minecraft.world.World;
import org.apache.commons.lang3.StringUtils;

View file

@ -32,9 +32,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Ingredient;
import net.minecraft.recipe.Recipe;
import net.minecraft.recipe.RecipeSerializer;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import net.minecraft.world.World;
import reborncore.RebornCore;
import reborncore.api.recipe.IRecipeCrafterProvider;
@ -63,7 +64,7 @@ public class RebornRecipe implements Recipe<Inventory>, CustomOutputRecipe {
@Override
public ItemStack createIcon() {
Optional<Item> catalyst = Registry.ITEM.getOrEmpty(type.name());
Optional<Item> catalyst = Registries.ITEM.getOrEmpty(type.name());
if (catalyst.isPresent())
return new ItemStack(catalyst.get());
else

View file

@ -24,8 +24,9 @@
package reborncore.common.crafting;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import reborncore.common.crafting.serde.RebornRecipeSerde;
import reborncore.common.crafting.serde.RecipeSerde;
@ -49,8 +50,8 @@ public class RecipeManager {
RebornRecipeType<R> type = new RebornRecipeType<>(recipeSerde, name);
recipeTypes.put(name, type);
Registry.register(Registry.RECIPE_TYPE, name, type);
Registry.register(Registry.RECIPE_SERIALIZER, name, type);
Registry.register(Registries.RECIPE_TYPE, name, type);
Registry.register(Registries.RECIPE_SERIALIZER, name, type);
return type;
}

View file

@ -37,10 +37,11 @@ import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtOps;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;
import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import net.minecraft.world.World;
import org.jetbrains.annotations.NotNull;
import reborncore.common.util.DefaultedListCollector;
@ -64,7 +65,7 @@ public class RecipeUtils {
private static ItemStack deserializeItem(JsonObject jsonObject) {
Identifier resourceLocation = new Identifier(JsonHelper.getString(jsonObject, "item"));
Item item = Registry.ITEM.get(resourceLocation);
Item item = Registries.ITEM.get(resourceLocation);
if (item == Items.AIR) {
throw new IllegalStateException(resourceLocation + " did not exist");
}

View file

@ -29,10 +29,11 @@ import com.google.gson.JsonObject;
import net.minecraft.item.Item;
import net.minecraft.recipe.Ingredient;
import net.minecraft.recipe.ShapedRecipe;
import net.minecraft.tag.TagKey;
import net.minecraft.registry.Registries;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.JsonHelper;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryEntry;
import net.minecraft.registry.Registry;
import net.minecraft.registry.entry.RegistryEntry;
import java.util.Map;
import java.util.stream.Stream;
@ -61,7 +62,7 @@ public class ShapedRecipeHelper {
for (Item item : items) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("item", Registry.ITEM.getId(item).toString());
jsonObject.addProperty("item", Registries.ITEM.getId(item).toString());
entries.add(jsonObject);
}
} else {
@ -82,7 +83,7 @@ public class ShapedRecipeHelper {
}
private static Stream<Item> streamItemsFromTag(TagKey<Item> tag) {
return StreamSupport.stream(Registry.ITEM.iterateEntries(tag).spliterator(), false)
return StreamSupport.stream(Registries.ITEM.iterateEntries(tag).spliterator(), false)
.map(RegistryEntry::value);
}
}

View file

@ -34,10 +34,11 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.recipe.Ingredient;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;
import net.minecraft.util.Lazy;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import reborncore.common.fluid.container.ItemFluidInfo;
import java.util.ArrayList;
@ -60,7 +61,7 @@ public class FluidIngredient extends RebornIngredient {
this.holders = holders;
this.count = count;
previewStacks = new Lazy<>(() -> Registry.ITEM.stream()
previewStacks = new Lazy<>(() -> Registries.ITEM.stream()
.filter(item -> item instanceof ItemFluidInfo)
.filter(item -> !holders.isPresent() || holders.get().stream().anyMatch(i -> i == item))
.map(item -> ((ItemFluidInfo) item).getFull(fluid))
@ -72,7 +73,7 @@ public class FluidIngredient extends RebornIngredient {
public static RebornIngredient deserialize(JsonObject json) {
Identifier identifier = new Identifier(JsonHelper.getString(json, "fluid"));
Fluid fluid = Registry.FLUID.get(identifier);
Fluid fluid = Registries.FLUID.get(identifier);
if (fluid == Fluids.EMPTY) {
throw new JsonParseException("Fluid could not be found: " + JsonHelper.getString(json, "fluid"));
}
@ -82,7 +83,7 @@ public class FluidIngredient extends RebornIngredient {
if (json.has("holder")) {
if (json.get("holder").isJsonPrimitive()) {
String ident = JsonHelper.getString(json, "holder");
Item item = Registry.ITEM.get(new Identifier(ident));
Item item = Registries.ITEM.get(new Identifier(ident));
if (item == Items.AIR) {
throw new JsonParseException("could not find item:" + ident);
}
@ -92,7 +93,7 @@ public class FluidIngredient extends RebornIngredient {
List<Item> itemList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
String ident = jsonArray.get(i).getAsString();
Item item = Registry.ITEM.get(new Identifier(ident));
Item item = Registries.ITEM.get(new Identifier(ident));
if (item == Items.AIR) {
throw new JsonParseException("could not find item:" + ident);
}
@ -138,14 +139,14 @@ public class FluidIngredient extends RebornIngredient {
@Override
public JsonObject toJson(boolean networkSync) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("fluid", Registry.FLUID.getId(fluid).toString());
jsonObject.addProperty("fluid", Registries.FLUID.getId(fluid).toString());
if (holders.isPresent()) {
List<Item> holderList = holders.get();
if (holderList.size() == 1) {
jsonObject.addProperty("holder", Registry.ITEM.getId(holderList.get(0)).toString());
jsonObject.addProperty("holder", Registries.ITEM.getId(holderList.get(0)).toString());
} else {
JsonArray holderArray = new JsonArray();
holderList.forEach(item -> holderArray.add(new JsonPrimitive(Registry.ITEM.getId(item).toString())));
holderList.forEach(item -> holderArray.add(new JsonPrimitive(Registries.ITEM.getId(item).toString())));
jsonObject.add("holder", holderArray);
}
}

View file

@ -34,9 +34,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtOps;
import net.minecraft.recipe.Ingredient;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import org.apache.commons.lang3.Validate;
import java.util.Collections;
@ -62,7 +63,7 @@ public class StackIngredient extends RebornIngredient {
public static RebornIngredient deserialize(JsonObject json) {
Identifier identifier = new Identifier(JsonHelper.getString(json, "item"));
Item item = Registry.ITEM.getOrEmpty(identifier).orElseThrow(() -> new JsonSyntaxException("Unknown item '" + identifier + "'"));
Item item = Registries.ITEM.getOrEmpty(identifier).orElseThrow(() -> new JsonSyntaxException("Unknown item '" + identifier + "'"));
Optional<Integer> stackSize = Optional.empty();
if (json.has("count")) {
@ -137,7 +138,7 @@ public class StackIngredient extends RebornIngredient {
public JsonObject toJson(boolean networkSync) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("item", Registry.ITEM.getId(stack.getItem()).toString());
jsonObject.addProperty("item", Registries.ITEM.getId(stack.getItem()).toString());
count.ifPresent(integer -> jsonObject.addProperty("count", integer));
if (requireEmptyNbt) {

View file

@ -30,11 +30,13 @@ import com.google.gson.JsonObject;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Ingredient;
import net.minecraft.tag.TagKey;
import net.minecraft.registry.Registries;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryEntry;
import net.minecraft.registry.Registry;
import net.minecraft.registry.entry.RegistryEntry;
import org.apache.commons.lang3.Validate;
import java.util.ArrayList;
@ -85,16 +87,16 @@ public class TagIngredient extends RebornIngredient {
final JsonArray itemsArray = JsonHelper.getArray(json, "items");
for (JsonElement jsonElement : itemsArray) {
Validate.isTrue(jsonElement.isJsonPrimitive());
Optional<RegistryEntry<Item>> entry = Registry.ITEM.getEntry(jsonElement.getAsInt());
items.add(entry.orElseThrow().value());
Item item = Registries.ITEM.get(jsonElement.getAsInt());
items.add(item);
}
return new Synced(TagKey.of(Registry.ITEM_KEY, tagIdent), count, items);
return new Synced(TagKey.of(RegistryKeys.ITEM, tagIdent), count, items);
}
Identifier identifier = new Identifier(JsonHelper.getString(json, "tag"));
TagKey<Item> tagKey = TagKey.of(Registry.ITEM_KEY, identifier);
TagKey<Item> tagKey = TagKey.of(RegistryKeys.ITEM, identifier);
return new TagIngredient(tagKey, count);
}
@ -118,7 +120,7 @@ public class TagIngredient extends RebornIngredient {
JsonArray itemArray = new JsonArray();
for (Item item : items) {
int rawId = Registry.ITEM.getRawId(item);
int rawId = Registries.ITEM.getRawId(item);
itemArray.add(rawId);
}
@ -130,7 +132,7 @@ public class TagIngredient extends RebornIngredient {
}
protected Stream<Item> streamItems() {
return StreamSupport.stream(Registry.ITEM.iterateEntries(tag).spliterator(), false)
return StreamSupport.stream(Registries.ITEM.iterateEntries(tag).spliterator(), false)
.map(RegistryEntry::value);
}

View file

@ -30,8 +30,9 @@ import com.mojang.serialization.Dynamic;
import com.mojang.serialization.JsonOps;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtOps;
import net.minecraft.registry.Registries;
import net.minecraft.util.JsonHelper;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import reborncore.common.crafting.RebornRecipe;
import reborncore.common.crafting.RecipeUtils;
import reborncore.common.crafting.ingredient.IngredientFactory;
@ -72,7 +73,7 @@ public abstract class AbstractRecipeSerde<R extends RebornRecipe> implements Rec
for (ItemStack stack : recipe.getOutputs()) {
final JsonObject stackObject = new JsonObject();
stackObject.addProperty("item", Registry.ITEM.getId(stack.getItem()).toString());
stackObject.addProperty("item", Registries.ITEM.getId(stack.getItem()).toString());
if (stack.getCount() > 1) {
stackObject.addProperty("count", stack.getCount());

View file

@ -27,9 +27,10 @@ package reborncore.common.crafting.serde;
import com.google.gson.JsonObject;
import net.minecraft.fluid.Fluid;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;
import net.minecraft.util.registry.Registry;
import org.jetbrains.annotations.NotNull;
import reborncore.common.crafting.RebornFluidRecipe;
import reborncore.common.crafting.RebornRecipeType;
@ -46,7 +47,7 @@ public abstract class RebornFluidRecipeSerde<R extends RebornFluidRecipe> extend
protected final R fromJson(JsonObject jsonObject, RebornRecipeType<R> type, Identifier name, List<RebornIngredient> ingredients, List<ItemStack> outputs, int power, int time) {
final JsonObject tank = JsonHelper.getObject(jsonObject, "tank");
final Identifier identifier = new Identifier(JsonHelper.getString(tank, "fluid"));
final Fluid fluid = Registry.FLUID.get(identifier);
final Fluid fluid = Registries.FLUID.get(identifier);
FluidValue value = FluidValue.BUCKET;
if (tank.has("amount")){
@ -61,7 +62,7 @@ public abstract class RebornFluidRecipeSerde<R extends RebornFluidRecipe> extend
@Override
public void collectJsonData(R recipe, JsonObject jsonObject, boolean networkSync) {
final JsonObject tankObject = new JsonObject();
tankObject.addProperty("fluid", Registry.FLUID.getId(recipe.getFluidInstance().getFluid()).toString());
tankObject.addProperty("fluid", Registries.FLUID.getId(recipe.getFluidInstance().getFluid()).toString());
var amountObject = new JsonObject();
amountObject.addProperty("droplets", recipe.getFluidInstance().getAmount().getRawValue());

View file

@ -41,9 +41,10 @@ import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.text.Text;
import net.minecraft.util.Hand;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import org.jetbrains.annotations.NotNull;
import reborncore.common.fluid.container.FluidInstance;
import reborncore.common.util.Tank;
@ -64,7 +65,7 @@ public class FluidUtils {
}
public static List<Fluid> getAllFluids() {
return Registry.FLUID.stream().collect(Collectors.toList());
return Registries.FLUID.stream().collect(Collectors.toList());
}
public static boolean drainContainers(Tank tank, Inventory inventory, int inputSlot, int outputSlot) {

View file

@ -36,6 +36,7 @@ import net.minecraft.state.StateManager;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
import net.minecraft.world.WorldAccess;
import net.minecraft.world.WorldView;
@ -75,7 +76,7 @@ public abstract class RebornFluid extends FlowableFluid {
}
@Override
protected boolean isInfinite() {
protected boolean isInfinite(World world) {
return false;
}

View file

@ -24,8 +24,9 @@
package reborncore.common.fluid;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import java.util.HashMap;
import java.util.stream.Stream;
@ -36,7 +37,7 @@ public class RebornFluidManager {
public static void register(RebornFluid rebornFluid, Identifier identifier) {
fluids.put(identifier, rebornFluid);
Registry.register(Registry.FLUID, identifier, rebornFluid);
Registry.register(Registries.FLUID, identifier, rebornFluid);
}
public static HashMap<Identifier, RebornFluid> getFluids() {

View file

@ -28,8 +28,9 @@ import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import reborncore.common.fluid.FluidValue;
import reborncore.common.util.NBTSerializable;
@ -114,7 +115,7 @@ public class FluidInstance implements NBTSerializable {
@Override
public NbtCompound write() {
NbtCompound tag = new NbtCompound();
tag.putString(FLUID_KEY, Registry.FLUID.getId(fluid).toString());
tag.putString(FLUID_KEY, Registries.FLUID.getId(fluid).toString());
tag.putLong(AMOUNT_KEY, amount.getRawValue());
if (this.tag != null && !this.tag.isEmpty()) {
tag.put(TAG_KEY, this.tag);
@ -124,7 +125,7 @@ public class FluidInstance implements NBTSerializable {
@Override
public void read(NbtCompound tag) {
fluid = Registry.FLUID.get(new Identifier(tag.getString(FLUID_KEY)));
fluid = Registries.FLUID.get(new Identifier(tag.getString(FLUID_KEY)));
amount = FluidValue.fromRaw(tag.getLong(AMOUNT_KEY));
if (tag.contains(TAG_KEY)) {
this.tag = tag.getCompound(TAG_KEY);

View file

@ -24,9 +24,10 @@
package reborncore.common.misc;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
/**
* @author drcrazy
@ -41,6 +42,6 @@ public class ModSounds {
}
private static SoundEvent createSoundEvent(Identifier identifier) {
return Registry.register(Registry.SOUND_EVENT, identifier, new SoundEvent(identifier));
return Registry.register(Registries.SOUND_EVENT, identifier, SoundEvent.of(identifier));
}
}

View file

@ -25,10 +25,10 @@
package reborncore.common.misc;
import net.minecraft.item.Item;
import net.minecraft.tag.TagKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.TagKey;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
public class RebornCoreTags {
public static final TagKey<Item> WATER_EXPLOSION_ITEM = TagKey.of(Registry.ITEM_KEY, new Identifier("reborncore", "water_explosion"));
public static final TagKey<Item> WATER_EXPLOSION_ITEM = TagKey.of(RegistryKeys.ITEM, new Identifier("reborncore", "water_explosion"));
}

View file

@ -26,7 +26,7 @@ package reborncore.common.misc;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.tag.TagKey;
import net.minecraft.registry.tag.TagKey;
import org.jetbrains.annotations.Contract;
/**

View file

@ -30,26 +30,29 @@ import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Ingredient;
import net.minecraft.recipe.RecipeSerializer;
import net.minecraft.recipe.ShapedRecipe;
import net.minecraft.recipe.book.CraftingRecipeCategory;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
import net.minecraft.util.JsonHelper;
import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.World;
import java.util.Map;
public class PaddedShapedRecipe extends ShapedRecipe {
public static final Identifier ID = new Identifier("reborncore", "padded");
public static final RecipeSerializer<ShapedRecipe> PADDED = Registry.register(Registry.RECIPE_SERIALIZER, ID, new Serializer());
public static final RecipeSerializer<ShapedRecipe> PADDED = Registry.register(Registries.RECIPE_SERIALIZER, ID, new Serializer());
public PaddedShapedRecipe(Identifier id, String group, int width, int height, DefaultedList<Ingredient> input, ItemStack output) {
super(id, group, width, height, input, output);
public PaddedShapedRecipe(Identifier id, String group, CraftingRecipeCategory category, int width, int height, DefaultedList<Ingredient> input, ItemStack output) {
super(id, group, category, width, height, input, output);
}
private static class Serializer extends ShapedRecipe.Serializer {
@Override
public PaddedShapedRecipe read(Identifier identifier, JsonObject jsonObject) {
String group = JsonHelper.getString(jsonObject, "group", "");
CraftingRecipeCategory category = CraftingRecipeCategory.CODEC.byId(JsonHelper.getString(jsonObject, "category", null), CraftingRecipeCategory.MISC);
Map<String, Ingredient> map = readSymbols(JsonHelper.getObject(jsonObject, "key"));
String[] strings = getPattern(JsonHelper.getArray(jsonObject, "pattern"));
@ -58,7 +61,7 @@ public class PaddedShapedRecipe extends ShapedRecipe {
DefaultedList<Ingredient> ingredients = createPatternMatrix(strings, map, width, height);
ItemStack output = outputFromJson(JsonHelper.getObject(jsonObject, "result"));
return new PaddedShapedRecipe(identifier, group, width, height, ingredients, output);
return new PaddedShapedRecipe(identifier, group, category, width, height, ingredients, output);
}
}

View file

@ -165,7 +165,7 @@ public class BuiltScreenHandler extends ScreenHandler {
}
@Override
public ItemStack transferSlot(final PlayerEntity player, final int index) {
public ItemStack quickMove(final PlayerEntity player, final int index) {
ItemStack originalStack = ItemStack.EMPTY;

View file

@ -26,11 +26,11 @@ package reborncore.common.util;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.World;
import reborncore.api.ICustomToolHandler;
@ -46,7 +46,7 @@ public class GenericWrenchHelper implements ICustomToolHandler {
@Override
public boolean canHandleTool(ItemStack stack) {
return Registry.ITEM.getId(stack.getItem()).equals(itemLocation);
return Registries.ITEM.getId(stack.getItem()).equals(itemLocation);
}
@Override

View file

@ -32,8 +32,9 @@ import net.fabricmc.fabric.api.transfer.v1.transaction.base.SnapshotParticipant;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.tuple.Pair;
import org.jetbrains.annotations.NotNull;
@ -123,7 +124,7 @@ public class Tank extends SnapshotParticipant<FluidInstance> implements Syncable
@Override
public void getSyncPair(List<Pair<Supplier<?>, Consumer<?>>> pairList) {
pairList.add(Pair.of(() -> Registry.FLUID.getId(fluidInstance.getFluid()).toString(), (Consumer<String>) o -> fluidInstance.setFluid(Registry.FLUID.get(new Identifier(o)))));
pairList.add(Pair.of(() -> Registries.FLUID.getId(fluidInstance.getFluid()).toString(), (Consumer<String>) o -> fluidInstance.setFluid(Registries.FLUID.get(new Identifier(o)))));
pairList.add(Pair.of(() -> fluidInstance.getAmount(), o -> fluidInstance.setAmount((FluidValue) o)));
}

View file

@ -24,15 +24,20 @@
package reborncore.common.util;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.entity.ItemEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkSectionPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.math.random.Random;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import java.util.List;
@ -89,4 +94,8 @@ public class WorldUtils {
itemStack.setCount(0);
}
}
public static RegistryWrapper<Block> getBlockRegistryWrapper(@Nullable World world) {
return world != null ? world.createCommandRegistryWrapper(RegistryKeys.BLOCK) : Registries.BLOCK.getReadOnlyWrapper();
}
}

View file

@ -29,8 +29,9 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.StringNbtReader;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import java.lang.reflect.Type;
@ -68,8 +69,8 @@ public class ItemStackSerializer implements JsonSerializer<ItemStack>, JsonDeser
}
}
if (name != null && Registry.ITEM.get(new Identifier(name)) != null) {
ItemStack itemStack = new ItemStack(Registry.ITEM.get(new Identifier(name)), stackSize);
if (name != null && Registries.ITEM.get(new Identifier(name)) != null) {
ItemStack itemStack = new ItemStack(Registries.ITEM.get(new Identifier(name)), stackSize);
itemStack.setNbt(tagCompound);
return itemStack;
}
@ -84,8 +85,8 @@ public class ItemStackSerializer implements JsonSerializer<ItemStack>, JsonDeser
if (src != null && src.getItem() != null) {
JsonObject jsonObject = new JsonObject();
if (Registry.ITEM.getId(src.getItem()) != null) {
jsonObject.addProperty(NAME, Registry.ITEM.getId(src.getItem()).toString());
if (Registries.ITEM.getId(src.getItem()) != null) {
jsonObject.addProperty(NAME, Registries.ITEM.getId(src.getItem()).toString());
} else {
return JsonNull.INSTANCE;
}

View file

@ -50,7 +50,7 @@ public abstract class MixinItemEntity extends Entity {
public void tick(CallbackInfo info) {
if (!world.isClient && isTouchingWater() && !getStack().isEmpty()) {
if (getStack().isIn(RebornCoreTags.WATER_EXPLOSION_ITEM)) {
world.createExplosion(this, getX(), getY(), getZ(), 2F, Explosion.DestructionType.BREAK);
world.createExplosion(this, getX(), getY(), getZ(), 2F, World.ExplosionSourceType.NONE);
this.remove(RemovalReason.KILLED);
}
}

View file

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

View file

@ -8,7 +8,7 @@ accessible class net/minecraft/recipe/Ingredient$Entry
accessible class net/minecraft/recipe/Ingredient$TagEntry
accessible class net/minecraft/recipe/Ingredient$StackEntry
accessible field net/minecraft/recipe/Ingredient entries [Lnet/minecraft/recipe/Ingredient$Entry;
accessible field net/minecraft/recipe/Ingredient$TagEntry tag Lnet/minecraft/tag/TagKey;
accessible field net/minecraft/recipe/Ingredient$TagEntry tag Lnet/minecraft/registry/tag/TagKey;
accessible method net/minecraft/client/gui/screen/ingame/HandledScreen getSlotAt (DD)Lnet/minecraft/screen/slot/Slot;
@ -16,10 +16,13 @@ accessible method net/minecraft/client/render/WorldRenderer drawShapeOu
accessible method net/minecraft/world/gen/treedecorator/TreeDecoratorType <init> (Lcom/mojang/serialization/Codec;)V
accessible method net/minecraft/client/item/ModelPredicateProviderRegistry register (Lnet/minecraft/item/Item;Lnet/minecraft/util/Identifier;Lnet/minecraft/client/item/UnclampedModelPredicateProvider;)V
accessible field net/minecraft/client/gui/screen/Screen selectables Ljava/util/List;
accessible field net/minecraft/block/FluidBlock fluid Lnet/minecraft/fluid/FlowableFluid;
accessible method net/minecraft/world/gen/foliage/FoliagePlacerType register (Ljava/lang/String;Lcom/mojang/serialization/Codec;)Lnet/minecraft/world/gen/foliage/FoliagePlacerType;
accessible method net/minecraft/recipe/RecipeManager getAllOfType (Lnet/minecraft/recipe/RecipeType;)Ljava/util/Map;
accessible field net/minecraft/screen/ScreenHandler listeners Ljava/util/List;
accessible method net/minecraft/recipe/ShapedRecipe matchesPattern (Lnet/minecraft/inventory/CraftingInventory;IIZ)Z
accessible field net/minecraft/structure/pool/StructurePool elements Lit/unimi/dsi/fastutil/objects/ObjectArrayList;
extendable method net/minecraft/data/server/recipe/RecipeProvider getName ()Ljava/lang/String;

View file

@ -27,6 +27,7 @@ repositories {
includeGroup "dev.architectury"
}
}
mavenCentral()
}
def ENV = System.getenv()
@ -180,12 +181,12 @@ dependencies {
include project(":RebornCore")
optionalClientDependency("dev.architectury:architectury-fabric:${project.arch_version}")
optionalClientDependency("me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}")
optionalClientDependency("dev.architectury:architectury-fabric:${project.arch_version}", false)
optionalClientDependency("me.shedaniel:RoughlyEnoughItems-fabric:${project.rei_version}", false)
// Use groovy for datagen/gametest, if you are copying this you prob dont want it.
gametestImplementation 'org.apache.groovy:groovy:4.0.4'
datagenImplementation 'org.apache.groovy:groovy:4.0.4'
gametestImplementation 'org.apache.groovy:groovy:4.0.6'
datagenImplementation 'org.apache.groovy:groovy:4.0.6'
gametestImplementation ("com.google.truth:truth:1.1.3") {
exclude module: "guava"
@ -320,7 +321,7 @@ curseforge {
id = "233564"
changelog = ENV.CHANGELOG ?: "No changelog provided"
releaseType = ENV.RELEASE_CHANNEL ?: "release"
addGameVersion "1.19.2" // Also update in RebornCore/build.gradle
addGameVersion "1.19.3" // Also update in RebornCore/build.gradle
addGameVersion "Fabric"
mainArtifact remapJar

View file

@ -2,14 +2,14 @@
org.gradle.jvmargs=-Xmx2G
# Mod properties
mod_version=5.4.0
mod_version=5.5.0
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.19.2
yarn_version=1.19.2+build.10
loader_version=0.14.9
fapi_version=0.66.0+1.19.2
minecraft_version=1.19.3
yarn_version=1.19.3+build.1
loader_version=0.14.11
fapi_version=0.68.1+1.19.3
# Dependencies
energy_version=2.3.0

View file

@ -30,10 +30,11 @@ import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry;
import net.fabricmc.fabric.api.renderer.v1.RendererAccess;
import net.minecraft.client.item.ClampedModelPredicateProvider;
import net.minecraft.client.item.ModelPredicateProviderRegistry;
import net.minecraft.client.item.UnclampedModelPredicateProvider;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.client.render.model.Baker;
import net.minecraft.client.render.model.ModelBakeSettings;
import net.minecraft.client.render.model.ModelLoader;
import net.minecraft.client.render.model.UnbakedModel;
@ -47,8 +48,9 @@ import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import org.jetbrains.annotations.Nullable;
import reborncore.client.ClientJumpEvent;
import reborncore.client.gui.builder.GuiBase;
@ -60,6 +62,7 @@ import techreborn.client.ClientGuiType;
import techreborn.client.ClientboundPacketHandlers;
import techreborn.client.events.ClientJumpHandler;
import techreborn.client.events.StackToolTipHandler;
import techreborn.client.render.BaseDynamicFluidBakedModel;
import techreborn.client.render.DynamicBucketBakedModel;
import techreborn.client.render.DynamicCellBakedModel;
import techreborn.client.render.entitys.CableCoverRenderer;
@ -80,6 +83,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Supplier;
public class TechRebornClient implements ClientModInitializer {
@ -103,47 +107,15 @@ public class TechRebornClient implements ClientModInitializer {
return JsonUnbakedModel.deserialize("{\"parent\":\"minecraft:item/generated\",\"textures\":{\"layer0\":\"techreborn:item/cell_background\"}}");
}
return new UnbakedModel() {
@Override
public Collection<Identifier> getModelDependencies() {
return Collections.emptyList();
return new UnbakedDynamicModel(DynamicCellBakedModel::new);
}
@Override
public Collection<SpriteIdentifier> getTextureDependencies(Function<Identifier, UnbakedModel> unbakedModelGetter, Set<Pair<String, String>> unresolvedTextureReferences) {
return Collections.emptyList();
}
@Override
public BakedModel bake(ModelLoader loader, Function<SpriteIdentifier, Sprite> textureGetter, ModelBakeSettings rotationContainer, Identifier modelId) {
return new DynamicCellBakedModel();
}
};
}
Fluid fluid = Registry.FLUID.get(new Identifier(TechReborn.MOD_ID, modelIdentifier.getPath().split("_bucket")[0]));
Fluid fluid = Registries.FLUID.get(new Identifier(TechReborn.MOD_ID, modelIdentifier.getPath().split("_bucket")[0]));
if (modelIdentifier.getPath().endsWith("_bucket") && fluid != Fluids.EMPTY) {
if (!RendererAccess.INSTANCE.hasRenderer()) {
return JsonUnbakedModel.deserialize("{\"parent\":\"minecraft:item/generated\",\"textures\":{\"layer0\":\"minecraft:item/bucket\"}}");
}
return new UnbakedModel() {
@Override
public Collection<Identifier> getModelDependencies() {
return Collections.emptyList();
}
@Override
public Collection<SpriteIdentifier> getTextureDependencies(Function<Identifier, UnbakedModel> unbakedModelGetter, Set<Pair<String, String>> unresolvedTextureReferences) {
return Collections.emptyList();
}
@Override
public BakedModel bake(ModelLoader loader, Function<SpriteIdentifier, Sprite> textureGetter, ModelBakeSettings rotationContainer, Identifier modelId) {
return new DynamicBucketBakedModel();
}
};
return new UnbakedDynamicModel(DynamicBucketBakedModel::new);
}
}
return null;
@ -252,13 +224,13 @@ public class TechRebornClient implements ClientModInitializer {
}
private static <T extends Item> void registerPredicateProvider(Class<T> itemClass, Identifier identifier, ItemModelPredicateProvider<T> modelPredicateProvider) {
Registry.ITEM.stream()
Registries.ITEM.stream()
.filter(item -> item.getClass().isAssignableFrom(itemClass))
.forEach(item -> ModelPredicateProviderRegistry.register(item, identifier, modelPredicateProvider));
}
//Need the item instance in a few places, this makes it easier
private interface ItemModelPredicateProvider<T extends Item> extends UnclampedModelPredicateProvider {
private interface ItemModelPredicateProvider<T extends Item> extends ClampedModelPredicateProvider {
float call(T item, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity entity, int seed);
@ -268,4 +240,28 @@ public class TechRebornClient implements ClientModInitializer {
}
}
private static class UnbakedDynamicModel implements UnbakedModel {
private final Supplier<BaseDynamicFluidBakedModel> supplier;
public UnbakedDynamicModel(Supplier<BaseDynamicFluidBakedModel> supplier) {
this.supplier = supplier;
}
@Override
public Collection<Identifier> getModelDependencies() {
return Collections.emptyList();
}
@Override
public void setParents(Function<Identifier, UnbakedModel> modelLoader) {
}
@Nullable
@Override
public BakedModel bake(Baker baker, Function<SpriteIdentifier, Sprite> textureGetter, ModelBakeSettings rotationContainer, Identifier modelId) {
return supplier.get();
}
}
}

View file

@ -373,7 +373,7 @@ public class ReiPlugin implements REIClientPlugin {
final Sprite sprite = handler.getFluidSprites(MinecraftClient.getInstance().world, BlockPos.ORIGIN, fluid.getDefaultState())[0];
int color = FluidRenderHandlerRegistry.INSTANCE.get(fluid).getFluidColor(MinecraftClient.getInstance().world, BlockPos.ORIGIN, fluid.getDefaultState());
final int iconHeight = sprite.getHeight();
final int iconHeight = sprite.getContents().getHeight();
int offsetHeight = drawHeight;
RenderSystem.setShaderColor((color >> 16 & 255) / 255.0F, (float) (color >> 8 & 255) / 255.0F, (float) (color & 255) / 255.0F, 1F);

View file

@ -40,10 +40,11 @@ import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import reborncore.api.IListInfoProvider;
import reborncore.common.BaseBlockEntityProvider;
import techreborn.blocks.cable.CableBlock;
@ -135,7 +136,7 @@ public class StackToolTipHandler implements ItemTooltipCallback {
}
private static boolean isTRItem(Item item) {
return Registry.ITEM.getId(item).getNamespace().equals("techreborn");
return Registries.ITEM.getId(item).getNamespace().equals("techreborn");
}
private static Text getOreDepthText(OreDepth depth) {

View file

@ -53,7 +53,10 @@ public class GuiChunkLoader extends GuiBase<BuiltScreenHandler> {
addDrawableChild(new GuiButtonUpDown(x + 64 + 24, y + 40, this, b -> onClick(-1), UpDownButtonType.REWIND));
addDrawableChild(new GuiButtonUpDown(x + 64 + 36, y + 40, this, b -> onClick(-5), UpDownButtonType.FASTREWIND));
addDrawableChild(new ButtonWidget(x + 10, y + 70, 155, 20, Text.literal("Toggle Loaded Chunks"), b -> ClientChunkManager.toggleLoadedChunks(blockEntity.getPos())));
addDrawableChild(ButtonWidget.builder(Text.literal("Toggle Loaded Chunks"), b -> ClientChunkManager.toggleLoadedChunks(blockEntity.getPos()))
.position(x + 10, y + 70)
.size(155, 20)
.build());
}
@Override

View file

@ -24,8 +24,6 @@
package techreborn.client.gui;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TexturedButtonWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
@ -37,7 +35,6 @@ import reborncore.client.gui.guibuilder.GuiBuilder;
import reborncore.common.screen.BuiltScreenHandler;
import techreborn.blockentity.machine.iron.IronFurnaceBlockEntity;
import techreborn.packets.ServerboundPackets;
import techreborn.utils.PlayerUtils;
public class GuiIronFurnace extends GuiBase<BuiltScreenHandler> {
@ -57,34 +54,35 @@ public class GuiIronFurnace extends GuiBase<BuiltScreenHandler> {
@Override
public void init() {
super.init();
ButtonWidget.TooltipSupplier tooltipSupplier = (button, matrices, mouseX, mouseY) -> {
PlayerEntity player = MinecraftClient.getInstance().player;
if (player == null) { return; }
String message = "Experience: ";
float furnaceExp = blockEntity.experience;
if (furnaceExp <= 0) {
message = message + "0";
} else {
float expTillLevel = (1.0F - player.experienceProgress) * player.getNextLevelExperience();
if (furnaceExp <= expTillLevel) {
int percentage = (int) (blockEntity.experience * 100 / player.getNextLevelExperience());
message = message + "+"
+ (percentage > 0 ? String.valueOf(percentage) : "<1")
+ "%";
} else {
int levels = 0;
furnaceExp -= expTillLevel;
while (furnaceExp > 0) {
furnaceExp -= PlayerUtils.getLevelExperience(player.experienceLevel);
++levels;
}
message = message + "+" + levels + "L";
}
}
renderTooltip(matrices, Text.literal(message), mouseX, mouseY);
};
// TODO 1.19.3
// ButtonWidget.TooltipSupplier tooltipSupplier = (button, matrices, mouseX, mouseY) -> {
// PlayerEntity player = MinecraftClient.getInstance().player;
// if (player == null) { return; }
// String message = "Experience: ";
//
// float furnaceExp = blockEntity.experience;
// if (furnaceExp <= 0) {
// message = message + "0";
// } else {
// float expTillLevel = (1.0F - player.experienceProgress) * player.getNextLevelExperience();
// if (furnaceExp <= expTillLevel) {
// int percentage = (int) (blockEntity.experience * 100 / player.getNextLevelExperience());
// message = message + "+"
// + (percentage > 0 ? String.valueOf(percentage) : "<1")
// + "%";
// } else {
// int levels = 0;
// furnaceExp -= expTillLevel;
// while (furnaceExp > 0) {
// furnaceExp -= PlayerUtils.getLevelExperience(player.experienceLevel);
// ++levels;
// }
// message = message + "+" + levels + "L";
// }
// }
//
// renderTooltip(matrices, Text.literal(message), mouseX, mouseY);
// };
addDrawableChild(new TexturedButtonWidget(
getGuiLeft() + 116,
@ -98,7 +96,6 @@ public class GuiIronFurnace extends GuiBase<BuiltScreenHandler> {
16,
16,
b -> onClick(),
tooltipSupplier,
Text.empty()));
}

View file

@ -33,7 +33,7 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.screen.PlayerScreenHandler;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import org.jetbrains.annotations.Nullable;
import techreborn.entities.EntityNukePrimed;
import techreborn.init.TRContent;
@ -69,7 +69,7 @@ public class NukeRenderer extends EntityRenderer<EntityNukePrimed> {
matrixStack.scale(j, j, j);
}
matrixStack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-90.0F));
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-90.0F));
matrixStack.translate(-0.5D, -0.5D, 0.5D);
TntMinecartEntityRenderer.renderFlashingBlock(blockRenderManager, TRContent.NUKE.getDefaultState(), matrixStack, vertexConsumerProvider, i, entity.getFuse() / 5 % 2 == 0);
matrixStack.pop();

View file

@ -35,7 +35,7 @@ import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import techreborn.blockentity.storage.item.StorageUnitBaseBlockEntity;
/**
@ -59,7 +59,7 @@ public class StorageUnitRenderer implements BlockEntityRenderer<StorageUnitBaseB
// Item rendering
matrices.push();
Direction direction = storage.getFacing();
matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion((direction.getHorizontal() - 2) * 90F));
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees((direction.getHorizontal() - 2) * 90F));
matrices.scale(0.5F, 0.5F, 0.5F);
switch (direction) {
case NORTH, WEST -> matrices.translate(1, 1, 0);
@ -78,7 +78,7 @@ public class StorageUnitRenderer implements BlockEntityRenderer<StorageUnitBaseB
// Render item only on horizontal facing #2183
if (Direction.Type.HORIZONTAL.test(facing) ){
matrices.translate(0.5, 0.5, 0.5); // Translate center
matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-facing.rotateYCounterclockwise().asRotation() + 90)); // Rotate depending on face
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-facing.rotateYCounterclockwise().asRotation() + 90)); // Rotate depending on face
matrices.translate(0, 0, -0.505); // Translate forward
}

View file

@ -35,7 +35,7 @@ import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import techreborn.blockentity.generator.basic.WindMillBlockEntity;
import java.util.Arrays;
@ -58,7 +58,7 @@ public class TurbineRenderer implements BlockEntityRenderer<WindMillBlockEntity>
matrixStack.push();
matrixStack.translate(0.5, 0, 0.5);
matrixStack.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(-facing.rotateYCounterclockwise().asRotation() + 90));
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-facing.rotateYCounterclockwise().asRotation() + 90));
matrixStack.translate(0, -1, -0.56);
float spin = blockEntity.bladeAngle + tickDelta * blockEntity.spinSpeed;

View file

@ -45,7 +45,7 @@ public class DestructoPackScreenHandler extends ScreenHandler {
}
@Override
public ItemStack transferSlot(PlayerEntity player, int index) {
public ItemStack quickMove(PlayerEntity player, int index) {
return ItemStack.EMPTY;
}

View file

@ -26,6 +26,8 @@ package techreborn.datagen
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.minecraft.registry.RegistryBuilder
import net.minecraft.registry.RegistryKeys
import techreborn.TechReborn
import techreborn.datagen.models.BlockLootTableProvider
import techreborn.datagen.models.ModelProvider
@ -42,35 +44,50 @@ import techreborn.datagen.recipes.smelting.SmeltingRecipesProvider
import techreborn.datagen.tags.TRBlockTagProvider
import techreborn.datagen.tags.TRItemTagProvider
import techreborn.datagen.tags.TRPointOfInterestTagProvider
import techreborn.datagen.tags.WaterExplosionTagProvider
import techreborn.datagen.worldgen.TRWorldGenBootstrap
import techreborn.datagen.worldgen.TRWorldGenProvider
class TechRebornDataGen implements DataGeneratorEntrypoint {
@Override
void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
fabricDataGenerator.addProvider(WaterExplosionTagProvider.&new)
fabricDataGenerator.addProvider(TRItemTagProvider.&new)
fabricDataGenerator.addProvider(TRPointOfInterestTagProvider.&new)
fabricDataGenerator.addProvider(TRBlockTagProvider.&new)
def pack = fabricDataGenerator.createPack()
def add = { FabricDataGenerator.Pack.RegistryDependentFactory factory ->
pack.addProvider factory
}
add TRItemTagProvider::new
add TRPointOfInterestTagProvider::new
add TRBlockTagProvider::new
// tags before all else, very important!!
fabricDataGenerator.addProvider(SmeltingRecipesProvider.&new)
fabricDataGenerator.addProvider(CraftingRecipesProvider.&new)
add SmeltingRecipesProvider::new
add CraftingRecipesProvider::new
fabricDataGenerator.addProvider(GrinderRecipesProvider.&new)
fabricDataGenerator.addProvider(CompressorRecipesProvider.&new)
fabricDataGenerator.addProvider(ExtractorRecipesProvider.&new)
fabricDataGenerator.addProvider(ChemicalReactorRecipesProvider.&new)
fabricDataGenerator.addProvider(AssemblingMachineRecipesProvider.&new)
fabricDataGenerator.addProvider(BlastFurnaceRecipesProvider.&new)
fabricDataGenerator.addProvider(IndustrialGrinderRecipesProvider.&new)
fabricDataGenerator.addProvider(IndustrialSawmillRecipesProvider.&new)
add GrinderRecipesProvider::new
add CompressorRecipesProvider::new
add ExtractorRecipesProvider::new
add ChemicalReactorRecipesProvider::new
add AssemblingMachineRecipesProvider::new
add BlastFurnaceRecipesProvider::new
add IndustrialGrinderRecipesProvider::new
add IndustrialSawmillRecipesProvider::new
fabricDataGenerator.addProvider(ModelProvider.&new)
fabricDataGenerator.addProvider(BlockLootTableProvider.&new)
add ModelProvider::new
add BlockLootTableProvider::new
add TRWorldGenProvider::new
}
@Override
String getEffectiveModId() {
return TechReborn.MOD_ID
}
@Override
void buildRegistry(RegistryBuilder registryBuilder) {
registryBuilder.addRegistry(RegistryKeys.CONFIGURED_FEATURE, TRWorldGenBootstrap::configuredFeatures)
registryBuilder.addRegistry(RegistryKeys.PLACED_FEATURE, TRWorldGenBootstrap::placedFeatures)
}
}

View file

@ -1,26 +1,20 @@
package techreborn.datagen.models
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider
import net.fabricmc.fabric.api.resource.conditions.v1.ConditionJsonProvider
import net.minecraft.data.DataWriter
import net.minecraft.data.server.BlockLootTableGenerator
import net.minecraft.loot.LootTable
import net.minecraft.util.Identifier
import org.jetbrains.annotations.NotNull
import net.minecraft.registry.RegistryWrapper
import techreborn.init.TRContent
import java.util.function.BiConsumer
import java.util.function.Consumer
import java.util.concurrent.CompletableFuture
class BlockLootTableProvider extends FabricBlockLootTableProvider{
BlockLootTableProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
BlockLootTableProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output)
}
@Override
protected void generateBlockLootTables() {
public void generate() {
TRContent.StorageBlocks.values().each {
addDrop(it.getBlock())
addDrop(it.getSlabBlock())

View file

@ -24,19 +24,20 @@
package techreborn.datagen.models
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider
import net.minecraft.block.Blocks
import net.minecraft.data.client.BlockStateModelGenerator
import net.minecraft.data.client.ItemModelGenerator
import net.minecraft.data.client.Models
import net.minecraft.data.family.BlockFamilies
import net.minecraft.data.family.BlockFamily
import net.minecraft.registry.RegistryWrapper
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class ModelProvider extends FabricModelProvider {
ModelProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
ModelProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output)
}
@Override

View file

@ -24,13 +24,14 @@
package techreborn.datagen.recipes
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider
import net.minecraft.advancement.criterion.CriterionConditions
import net.minecraft.data.server.recipe.RecipeJsonProvider
import net.minecraft.item.ItemConvertible
import net.minecraft.recipe.Ingredient
import net.minecraft.tag.TagKey
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.TagKey
import net.minecraft.util.Identifier
import techreborn.datagen.recipes.machine.MachineRecipeJsonFactory
import techreborn.datagen.recipes.machine.blast_furnace.BlastFurnaceRecipeJsonFactory
@ -38,16 +39,17 @@ import techreborn.datagen.recipes.machine.industrial_grinder.IndustrialGrinderRe
import techreborn.datagen.recipes.machine.industrial_sawmill.IndustrialSawmillRecipeJsonFactory
import techreborn.init.ModRecipes
import java.util.concurrent.CompletableFuture
import java.util.function.Consumer
abstract class TechRebornRecipesProvider extends FabricRecipeProvider {
protected Consumer<RecipeJsonProvider> exporter
TechRebornRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
TechRebornRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output)
}
@Override
protected void generateRecipes(Consumer<RecipeJsonProvider> exporter) {
final void generate(Consumer<RecipeJsonProvider> exporter) {
this.exporter = exporter
generateRecipes()
}
@ -161,4 +163,9 @@ abstract class TechRebornRecipesProvider extends FabricRecipeProvider {
protected Identifier getRecipeIdentifier(Identifier identifier) {
return new Identifier("techreborn", super.getRecipeIdentifier(identifier).path)
}
@Override
public String getName() {
return "Recipes / " + getClass().name
}
}

View file

@ -25,21 +25,26 @@
package techreborn.datagen.recipes.crafting
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.data.server.recipe.ShapedRecipeJsonBuilder
import net.minecraft.data.server.recipe.ShapelessRecipeJsonBuilder
import net.minecraft.data.server.recipe.SingleItemRecipeJsonBuilder
import net.minecraft.item.ItemConvertible
import net.minecraft.item.Items
import net.minecraft.recipe.RecipeSerializer
import net.minecraft.recipe.book.RecipeCategory
import net.minecraft.registry.RegistryWrapper
import net.minecraft.util.Identifier
import techreborn.TechReborn
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
import java.util.function.Function
class CraftingRecipesProvider extends TechRebornRecipesProvider {
CraftingRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
CraftingRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override
@ -191,8 +196,8 @@ class CraftingRecipesProvider extends TechRebornRecipesProvider {
return s.toString()
}
def offerMonoShapelessRecipe(def input, int inputSize, ItemConvertible output, int outputSize, String source, prefix = "", String result = null) {
ShapelessRecipeJsonBuilder.create(output, outputSize).input(createIngredient(input), inputSize)
def offerMonoShapelessRecipe(def input, int inputSize, ItemConvertible output, int outputSize, String source, prefix = "", String result = null, RecipeCategory category = RecipeCategory.MISC) {
new ShapelessRecipeJsonBuilder(category, output, outputSize).input(createIngredient(input), inputSize)
.criterion(getCriterionName(input), getCriterionConditions(input))
.offerTo(this.exporter, new Identifier(TechReborn.MOD_ID, recipeNameString(prefix, input, output, source, result)))
}
@ -206,14 +211,14 @@ class CraftingRecipesProvider extends TechRebornRecipesProvider {
return s.toString()
}
def static createMonoShapeRecipe(def input, ItemConvertible output, char character, int outputAmount = 1) {
return ShapedRecipeJsonBuilder.create(output, outputAmount)
def static createMonoShapeRecipe(def input, ItemConvertible output, char character, int outputAmount = 1, RecipeCategory category = RecipeCategory.MISC) {
return new ShapedRecipeJsonBuilder(category, output, outputAmount)
.input(character, createIngredient(input))
.criterion(getCriterionName(input), getCriterionConditions(input))
}
def static createDuoShapeRecipe(def input1, def input2, ItemConvertible output, char char1, char char2, boolean crit1 = true, boolean crit2 = false) {
ShapedRecipeJsonBuilder factory = ShapedRecipeJsonBuilder.create(output)
def static createDuoShapeRecipe(def input1, def input2, ItemConvertible output, char char1, char char2, boolean crit1 = true, boolean crit2 = false, RecipeCategory category = RecipeCategory.MISC) {
ShapedRecipeJsonBuilder factory = ShapedRecipeJsonBuilder.create(category, output)
.input(char1, createIngredient(input1))
.input(char2, createIngredient(input2))
if (crit1)
@ -223,8 +228,8 @@ class CraftingRecipesProvider extends TechRebornRecipesProvider {
return factory
}
def static createStonecutterRecipe(def input, ItemConvertible output, int outputAmount = 1) {
return SingleItemRecipeJsonBuilder.createStonecutting(createIngredient(input), output, outputAmount)
def static createStonecutterRecipe(def input, ItemConvertible output, int outputAmount = 1, RecipeCategory category = RecipeCategory.MISC) {
return new SingleItemRecipeJsonBuilder(category, RecipeSerializer.STONECUTTING, createIngredient(input), output, outputAmount)
.criterion(getCriterionName(input), getCriterionConditions(input))
}

View file

@ -27,7 +27,7 @@ package techreborn.datagen.recipes.machine
import net.minecraft.item.Item
import net.minecraft.item.ItemConvertible
import net.minecraft.item.ItemStack
import net.minecraft.tag.TagKey
import net.minecraft.registry.tag.TagKey
import net.minecraft.util.Identifier
import reborncore.common.crafting.ingredient.RebornIngredient
import reborncore.common.crafting.ingredient.StackIngredient

View file

@ -26,6 +26,7 @@ package techreborn.datagen.recipes.machine
import com.google.gson.JsonObject
import net.fabricmc.fabric.api.resource.conditions.v1.ConditionJsonProvider
import net.fabricmc.fabric.api.resource.conditions.v1.DefaultResourceConditions
import net.fabricmc.fabric.impl.datagen.FabricDataGenHelper
import net.minecraft.advancement.Advancement.Builder
import net.minecraft.advancement.criterion.CriterionConditions
@ -33,15 +34,16 @@ import net.minecraft.data.server.recipe.RecipeJsonProvider
import net.minecraft.item.ItemConvertible
import net.minecraft.item.ItemStack
import net.minecraft.recipe.RecipeSerializer
import net.minecraft.tag.TagKey
import net.minecraft.registry.Registries
import net.minecraft.registry.Registry
import net.minecraft.registry.tag.TagKey
import net.minecraft.resource.featuretoggle.FeatureFlag
import net.minecraft.util.Identifier
import net.minecraft.util.registry.Registry
import org.jetbrains.annotations.NotNull
import reborncore.common.crafting.RebornRecipe
import reborncore.common.crafting.RebornRecipeType
import reborncore.common.crafting.RecipeUtils
import reborncore.common.crafting.ingredient.RebornIngredient
import techreborn.datagen.recipes.TechRebornRecipesProvider
import java.util.function.Consumer
@ -209,10 +211,14 @@ class MachineRecipeJsonFactory<R extends RebornRecipe> {
throw new IllegalStateException("Recipe has no outputs")
}
def outputId = Registry.ITEM.getId(outputs[0].item)
def outputId = Registries.ITEM.getId(outputs[0].item)
return new Identifier("techreborn", "${type.name().path}/${outputId.path}${getSourceAppendix()}")
}
def feature(FeatureFlag flag) {
condition(DefaultResourceConditions.featuresEnabled(flag))
}
static class MachineRecipeJsonProvider<R extends RebornRecipe> implements RecipeJsonProvider {
private final RebornRecipeType<R> type
private final R recipe

View file

@ -24,16 +24,19 @@
package techreborn.datagen.recipes.machine.assembling_machine
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.tag.ItemTags
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.ItemTags
import techreborn.datagen.recipes.TechRebornRecipesProvider
import java.util.concurrent.CompletableFuture
class AssemblingMachineRecipesProvider extends TechRebornRecipesProvider {
AssemblingMachineRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
AssemblingMachineRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override

View file

@ -24,12 +24,15 @@
package techreborn.datagen.recipes.machine.blast_furnace
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.registry.RegistryWrapper
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
public final int ARMOR_POWER = 128
@ -39,8 +42,8 @@ class BlastFurnaceRecipesProvider extends TechRebornRecipesProvider {
public final int TOOL_TIME = ARMOR_TIME
public final int TOOL_HEAT = ARMOR_HEAT
BlastFurnaceRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
BlastFurnaceRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override

View file

@ -24,18 +24,21 @@
package techreborn.datagen.recipes.machine.chemical_reactor
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.item.ItemStack
import net.minecraft.registry.RegistryWrapper
import reborncore.common.util.ColoredItem
import techreborn.datagen.recipes.TechRebornRecipesProvider
import java.util.concurrent.CompletableFuture
class ChemicalReactorRecipesProvider extends TechRebornRecipesProvider {
public final int DYE_POWER = 25
public final int DYE_TIME = 250
ChemicalReactorRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
ChemicalReactorRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override

View file

@ -24,15 +24,18 @@
package techreborn.datagen.recipes.machine.compressor
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.item.ItemStack
import net.minecraft.registry.RegistryWrapper
import reborncore.common.misc.TagConvertible
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class CompressorRecipesProvider extends TechRebornRecipesProvider {
CompressorRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
CompressorRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override

View file

@ -24,15 +24,18 @@
package techreborn.datagen.recipes.machine.extractor
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.registry.RegistryWrapper
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class ExtractorRecipesProvider extends TechRebornRecipesProvider {
ExtractorRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
ExtractorRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override

View file

@ -24,19 +24,23 @@
package techreborn.datagen.recipes.machine.grinder
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.tag.ItemTags
import net.minecraft.tag.TagKey
import net.minecraft.registry.Registry
import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.ItemTags
import net.minecraft.registry.tag.TagKey
import net.minecraft.util.Identifier
import net.minecraft.util.registry.Registry
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class GrinderRecipesProvider extends TechRebornRecipesProvider {
GrinderRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
GrinderRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override
@ -57,9 +61,9 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
void generateVanillaRawMetals() {
[
(Items.RAW_IRON) : (TagKey.of(Registry.ITEM_KEY, new Identifier("c", "iron_ores"))),
(Items.RAW_COPPER): (TagKey.of(Registry.ITEM_KEY, new Identifier("c", "copper_ores"))),
(Items.RAW_GOLD) : (TagKey.of(Registry.ITEM_KEY, new Identifier("c", "gold_ores")))
(Items.RAW_IRON) : (TagKey.of(RegistryKeys.ITEM, new Identifier("c", "iron_ores"))),
(Items.RAW_COPPER): (TagKey.of(RegistryKeys.ITEM, new Identifier("c", "copper_ores"))),
(Items.RAW_GOLD) : (TagKey.of(RegistryKeys.ITEM, new Identifier("c", "gold_ores")))
].each { raw, oreTag ->
offerGrinderRecipe {
ingredients oreTag
@ -249,5 +253,4 @@ class GrinderRecipesProvider extends TechRebornRecipesProvider {
}
}
}
}

View file

@ -24,13 +24,16 @@
package techreborn.datagen.recipes.machine.industrial_grinder
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.registry.RegistryWrapper
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.init.ModFluids
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
public final int ARMOR_POWER = 128
@ -41,8 +44,8 @@ class IndustrialGrinderRecipesProvider extends TechRebornRecipesProvider {
public final long TOOL_FLUID_AMOUNT = 500L // in millibuckets
var dustMap = TRContent.SmallDusts.SD2DMap
IndustrialGrinderRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
IndustrialGrinderRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override

View file

@ -24,17 +24,21 @@
package techreborn.datagen.recipes.machine.industrial_sawmill
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.tag.ItemTags
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.ItemTags
import net.minecraft.resource.featuretoggle.FeatureFlags
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
IndustrialSawmillRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
IndustrialSawmillRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override
@ -59,6 +63,14 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
fluidAmount 1000 // in millibuckets
}
}
offerIndustrialSawmillRecipe {
ingredients ItemTags.BAMBOO_BLOCKS
outputs new ItemStack(Items.BAMBOO_PLANKS,2), new ItemStack(TRContent.Dusts.SAW, 1)
power 40
time 100
fluidAmount 500 // in millibuckets
feature FeatureFlags.UPDATE_1_20
}
[
(Items.ACACIA_STAIRS): Items.ACACIA_SLAB,
(Items.BIRCH_STAIRS): Items.BIRCH_SLAB,
@ -81,6 +93,21 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
criterion getCriterionName(stairs), getCriterionConditions(stairs)
}
}
[
(Items.BAMBOO_STAIRS): Items.BAMBOO_SLAB,
(Items.BAMBOO_MOSAIC_STAIRS): Items.BAMBOO_MOSAIC_SLAB
].each { stairs, slab ->
offerIndustrialSawmillRecipe {
ingredients stairs
outputs slab, new ItemStack(TRContent.Dusts.SAW, 2)
power 30
time 100
fluidAmount 250 // in millibuckets
source "stairs"
criterion getCriterionName(stairs), getCriterionConditions(stairs)
feature FeatureFlags.UPDATE_1_20
}
}
[
(Items.ACACIA_SLAB): Items.ACACIA_PRESSURE_PLATE,
(Items.BIRCH_SLAB): Items.BIRCH_PRESSURE_PLATE,
@ -103,6 +130,21 @@ class IndustrialSawmillRecipesProvider extends TechRebornRecipesProvider {
criterion getCriterionName(slab), getCriterionConditions(slab)
}
}
[
(Items.BAMBOO_SLAB): Items.BAMBOO_PRESSURE_PLATE,
(Items.BAMBOO_MOSAIC_SLAB): Items.BAMBOO_PRESSURE_PLATE
].each { slab, plate ->
offerIndustrialSawmillRecipe {
ingredients slab
outputs new ItemStack(plate, 2), new ItemStack(TRContent.Dusts.SAW, 2)
power 30
time 200
fluidAmount 250 // in millibuckets
source ((slab == Items.BAMBOO_MOSAIC_SLAB ? "mosaic_" : "") + "slab")
criterion getCriterionName(slab), getCriterionConditions(slab)
feature FeatureFlags.UPDATE_1_20
}
}
[
(ItemTags.PLANKS): 8,
// stairs would be 6, slabs 4

View file

@ -24,18 +24,22 @@
package techreborn.datagen.recipes.smelting
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.minecraft.data.server.recipe.CookingRecipeJsonBuilder
import net.minecraft.item.ItemConvertible
import net.minecraft.item.Items
import net.minecraft.recipe.CookingRecipeSerializer
import net.minecraft.recipe.RecipeSerializer
import net.minecraft.recipe.book.RecipeCategory
import net.minecraft.registry.RegistryWrapper
import techreborn.datagen.recipes.TechRebornRecipesProvider
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class SmeltingRecipesProvider extends TechRebornRecipesProvider {
SmeltingRecipesProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
SmeltingRecipesProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override
@ -73,8 +77,8 @@ class SmeltingRecipesProvider extends TechRebornRecipesProvider {
offerCookingRecipe(input, output, experience, cookingTime, RecipeSerializer.BLASTING, "blasting/")
}
def offerCookingRecipe(def input, ItemConvertible output, float experience, int cookingTime, CookingRecipeSerializer<?> serializer, String prefix = "") {
CookingRecipeJsonBuilder.create(createIngredient(input), output, experience, cookingTime, serializer)
def offerCookingRecipe(def input, ItemConvertible output, float experience, int cookingTime, CookingRecipeSerializer<?> serializer, String prefix = "", RecipeCategory category = RecipeCategory.MISC) {
CookingRecipeJsonBuilder.create(createIngredient(input), category, output, experience, cookingTime, serializer)
.criterion(getCriterionName(input), getCriterionConditions(input))
.offerTo(this.exporter, prefix + getInputPath(output) + "_from_" + getInputPath(input))
}

View file

@ -24,22 +24,25 @@
package techreborn.datagen.tags
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider
import net.fabricmc.fabric.api.mininglevel.v1.FabricMineableTags
import net.fabricmc.fabric.api.tag.convention.v1.ConventionalBlockTags
import net.minecraft.tag.BlockTags
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.BlockTags
import net.minecraft.util.Identifier
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class TRBlockTagProvider extends FabricTagProvider.BlockTagProvider {
TRBlockTagProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
TRBlockTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override
protected void generateTags() {
protected void configure(RegistryWrapper.WrapperLookup lookup) {
getOrCreateTagBuilder(TRContent.BlockTags.DRILL_MINEABLE)
.addOptionalTag(BlockTags.PICKAXE_MINEABLE.id())
.addOptionalTag(BlockTags.SHOVEL_MINEABLE.id())

View file

@ -24,19 +24,23 @@
package techreborn.datagen.tags
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider.ItemTagProvider
import net.minecraft.tag.BlockTags
import net.minecraft.tag.ItemTags
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.ItemTags
import reborncore.common.misc.RebornCoreTags
import techreborn.init.ModFluids
import techreborn.init.TRContent
import java.util.concurrent.CompletableFuture
class TRItemTagProvider extends ItemTagProvider {
TRItemTagProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator)
TRItemTagProvider(FabricDataOutput dataOutput, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(dataOutput, registriesFuture)
}
@Override
protected void generateTags() {
protected void configure(RegistryWrapper.WrapperLookup arg) {
TRContent.Ores.values().each { ore ->
getOrCreateTagBuilder(ore.asTag()).add(ore.asItem())
getOrCreateTagBuilder(TRContent.ItemTags.ORES).add(ore.asItem())
@ -176,5 +180,8 @@ class TRItemTagProvider extends ItemTagProvider {
getOrCreateTagBuilder(ItemTags.WOODEN_TRAPDOORS)
.add(TRContent.RUBBER_TRAPDOOR.asItem())
getOrCreateTagBuilder(RebornCoreTags.WATER_EXPLOSION_ITEM)
.add(ModFluids.SODIUM.getBucket())
}
}

View file

@ -24,20 +24,23 @@
package techreborn.datagen.tags
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider
import net.minecraft.tag.PointOfInterestTypeTags
import net.minecraft.util.registry.Registry
import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.RegistryWrapper
import net.minecraft.registry.tag.PointOfInterestTypeTags
import net.minecraft.world.poi.PointOfInterestType
import techreborn.init.TRVillager
import java.util.concurrent.CompletableFuture
class TRPointOfInterestTagProvider extends FabricTagProvider<PointOfInterestType> {
TRPointOfInterestTagProvider(FabricDataGenerator dataGenerator) {
super(dataGenerator, Registry.POINT_OF_INTEREST_TYPE)
TRPointOfInterestTagProvider(FabricDataOutput dataOutput, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(dataOutput, RegistryKeys.POINT_OF_INTEREST_TYPE, registriesFuture)
}
@Override
protected void generateTags() {
protected void configure(RegistryWrapper.WrapperLookup arg) {
getOrCreateTagBuilder(PointOfInterestTypeTags.ACQUIRABLE_JOB_SITE)
.add(TRVillager.METALLURGIST_POI)
.add(TRVillager.ELECTRICIAN_POI)

View file

@ -0,0 +1,185 @@
package techreborn.datagen.worldgen
import net.minecraft.block.BlockState
import net.minecraft.block.Blocks
import net.minecraft.registry.Registerable
import net.minecraft.registry.RegistryEntryLookup
import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.tag.BlockTags
import net.minecraft.structure.rule.BlockMatchRuleTest
import net.minecraft.structure.rule.BlockStateMatchRuleTest
import net.minecraft.structure.rule.RuleTest
import net.minecraft.structure.rule.TagMatchRuleTest
import net.minecraft.util.collection.DataPool
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.Direction
import net.minecraft.util.math.intprovider.ConstantIntProvider
import net.minecraft.world.Heightmap
import net.minecraft.world.gen.YOffset
import net.minecraft.world.gen.blockpredicate.BlockPredicate
import net.minecraft.world.gen.feature.*
import net.minecraft.world.gen.feature.size.TwoLayersFeatureSize
import net.minecraft.world.gen.foliage.BlobFoliagePlacer
import net.minecraft.world.gen.heightprovider.UniformHeightProvider
import net.minecraft.world.gen.placementmodifier.*
import net.minecraft.world.gen.stateprovider.BlockStateProvider
import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider
import net.minecraft.world.gen.trunk.StraightTrunkPlacer
import techreborn.blocks.misc.BlockRubberLog
import techreborn.init.ModFluids
import techreborn.init.TRContent
import techreborn.world.RubberTreeSpikeDecorator
import techreborn.world.TROreFeatureConfig
import techreborn.world.TargetDimension
import techreborn.world.WorldGenerator
class TRWorldGenBootstrap {
static void configuredFeatures(Registerable<ConfiguredFeature> registry) {
def placedFeatureLookup = registry.getRegistryLookup(RegistryKeys.PLACED_FEATURE)
WorldGenerator.ORE_FEATURES.forEach {
registry.register(it.configuredFeature(), createOreConfiguredFeature(it))
}
registry.register(WorldGenerator.OIL_LAKE_FEATURE, createOilLakeConfiguredFeature())
registry.register(WorldGenerator.RUBBER_TREE_FEATURE, createRubberTreeConfiguredFeature())
registry.register(WorldGenerator.RUBBER_TREE_PATCH_FEATURE, createRubberPatchTreeConfiguredFeature(placedFeatureLookup))
}
static void placedFeatures(Registerable<PlacedFeature> registry) {
def configuredFeatureLookup = registry.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE)
WorldGenerator.ORE_FEATURES.forEach {
registry.register(it.placedFeature(), createOrePlacedFeature(configuredFeatureLookup, it))
}
registry.register(WorldGenerator.OIL_LAKE_PLACED_FEATURE, createOilLakePlacedFeature(configuredFeatureLookup))
registry.register(WorldGenerator.RUBBER_TREE_PLACED_FEATURE, createRubberTreePlacedFeature(configuredFeatureLookup))
registry.register(WorldGenerator.RUBBER_TREE_PATCH_PLACED_FEATURE, createRubberTreePatchPlacedFeature(configuredFeatureLookup))
}
// Ores
private static ConfiguredFeature createOreConfiguredFeature(TROreFeatureConfig config) {
def oreFeatureConfig = switch (config.ore().distribution.dimension) {
case TargetDimension.OVERWORLD -> createOverworldOreFeatureConfig(config)
case TargetDimension.NETHER -> createSimpleOreFeatureConfig(new BlockMatchRuleTest(Blocks.NETHERRACK), config)
case TargetDimension.END -> createSimpleOreFeatureConfig(new BlockStateMatchRuleTest(Blocks.END_STONE.getDefaultState()), config)
}
return new ConfiguredFeature<>(Feature.ORE, oreFeatureConfig)
}
private static OreFeatureConfig createOverworldOreFeatureConfig(TROreFeatureConfig config) {
if (config.ore().getDeepslate() != null) {
return new OreFeatureConfig(List.of(
OreFeatureConfig.createTarget(new TagMatchRuleTest(BlockTags.STONE_ORE_REPLACEABLES), config.ore().block.getDefaultState()),
OreFeatureConfig.createTarget(new TagMatchRuleTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES), config.ore().getDeepslate().block.getDefaultState())
), config.ore().distribution.veinSize)
}
return createSimpleOreFeatureConfig(new TagMatchRuleTest(BlockTags.STONE_ORE_REPLACEABLES), config)
}
private static OreFeatureConfig createSimpleOreFeatureConfig(RuleTest test, TROreFeatureConfig config) {
return new OreFeatureConfig(test, config.ore().block.getDefaultState(), config.ore().distribution.veinSize)
}
private static PlacedFeature createOrePlacedFeature(RegistryEntryLookup<ConfiguredFeature> configuredFeatureLookup, TROreFeatureConfig config) {
return new PlacedFeature(configuredFeatureLookup.getOrThrow(config.configuredFeature()), getOrePlacementModifiers(config))
}
private static List<PlacementModifier> getOrePlacementModifiers(TROreFeatureConfig config) {
return oreModifiers(
CountPlacementModifier.of(config.ore().distribution.veinsPerChunk),
HeightRangePlacementModifier.uniform(
config.ore().distribution.minOffset,
YOffset.fixed(config.ore().distribution.maxY)
)
)
}
private static List<PlacementModifier> oreModifiers(PlacementModifier first, PlacementModifier second) {
return List.of(first, SquarePlacementModifier.of(), second, BiomePlacementModifier.of())
}
// Oil lake
private static ConfiguredFeature createOilLakeConfiguredFeature() {
return new ConfiguredFeature<>(Feature.LAKE,
new LakeFeature.Config(
BlockStateProvider.of(ModFluids.OIL.getBlock().getDefaultState()),
BlockStateProvider.of(Blocks.STONE.getDefaultState())
)
)
}
private static PlacedFeature createOilLakePlacedFeature(RegistryEntryLookup<ConfiguredFeature> lookup) {
return new PlacedFeature(
lookup.getOrThrow(WorldGenerator.OIL_LAKE_FEATURE), List.of(
RarityFilterPlacementModifier.of(20),
HeightRangePlacementModifier.of(UniformHeightProvider.create(YOffset.fixed(0), YOffset.getTop())),
EnvironmentScanPlacementModifier.of(Direction.DOWN, BlockPredicate.bothOf(BlockPredicate.not(BlockPredicate.IS_AIR), BlockPredicate.insideWorldBounds(new BlockPos(0, -5, 0))), 32),
SurfaceThresholdFilterPlacementModifier.of(Heightmap.Type.OCEAN_FLOOR_WG, Integer.MIN_VALUE, -5)
)
)
}
// Rubber tree
private static ConfiguredFeature createRubberTreeConfiguredFeature() {
final DataPool.Builder<BlockState> logDataPool = DataPool.<BlockState>builder()
.add(TRContent.RUBBER_LOG.getDefaultState(), 6)
Arrays.stream(Direction.values())
.filter(direction -> direction.getAxis().isHorizontal())
.map(direction -> TRContent.RUBBER_LOG.getDefaultState()
.with(BlockRubberLog.HAS_SAP, true)
.with(BlockRubberLog.SAP_SIDE, direction)
)
.forEach(state -> logDataPool.add(state, 1))
return new ConfiguredFeature<>(Feature.TREE,
new TreeFeatureConfig.Builder(
new WeightedBlockStateProvider(logDataPool),
new StraightTrunkPlacer(6, 3, 0),
BlockStateProvider.of(TRContent.RUBBER_LEAVES.getDefaultState()),
new BlobFoliagePlacer(
ConstantIntProvider.create(2),
ConstantIntProvider.create(0),
3
),
new TwoLayersFeatureSize(
1,
0,
1
))
.decorators(List.of(
new RubberTreeSpikeDecorator(4, BlockStateProvider.of(TRContent.RUBBER_LEAVES.getDefaultState()))
)).build()
)
}
private static PlacedFeature createRubberTreePlacedFeature(RegistryEntryLookup<ConfiguredFeature> lookup) {
return new PlacedFeature(lookup.getOrThrow(WorldGenerator.RUBBER_TREE_FEATURE), List.of(
PlacedFeatures.wouldSurvive(TRContent.RUBBER_SAPLING)
))
}
private static ConfiguredFeature createRubberPatchTreeConfiguredFeature(RegistryEntryLookup<PlacedFeature> lookup) {
return new ConfiguredFeature<>(Feature.RANDOM_PATCH,
ConfiguredFeatures.createRandomPatchFeatureConfig(
6, lookup.getOrThrow(WorldGenerator.RUBBER_TREE_PLACED_FEATURE)
)
)
}
private static PlacedFeature createRubberTreePatchPlacedFeature(RegistryEntryLookup<ConfiguredFeature> lookup) {
return new PlacedFeature(
lookup.getOrThrow(WorldGenerator.RUBBER_TREE_PATCH_FEATURE),
List.of(
RarityFilterPlacementModifier.of(3),
SquarePlacementModifier.of(),
PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP,
BiomePlacementModifier.of()
)
)
}
}

View file

@ -0,0 +1,25 @@
package techreborn.datagen.worldgen
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput
import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider
import net.minecraft.registry.RegistryKeys
import net.minecraft.registry.RegistryWrapper
import java.util.concurrent.CompletableFuture
class TRWorldGenProvider extends FabricDynamicRegistryProvider {
TRWorldGenProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture)
}
@Override
protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) {
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.CONFIGURED_FEATURE))
entries.addAll(registries.getWrapperOrThrow(RegistryKeys.PLACED_FEATURE))
}
@Override
String getName() {
return "TechReborn World gen"
}
}

View file

@ -26,7 +26,7 @@ package techreborn
import net.minecraft.Bootstrap
import net.minecraft.SharedConstants
import net.minecraft.util.registry.BuiltinRegistries
import net.minecraft.registry.BuiltinRegistries
import net.minecraft.world.EmptyBlockView
import net.minecraft.world.gen.HeightContext
import net.minecraft.world.gen.chunk.DebugChunkGenerator

View file

@ -25,12 +25,9 @@
package techreborn;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
import net.minecraft.block.ComposterBlock;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import reborncore.common.blockentity.RedstoneConfiguration;
@ -42,7 +39,15 @@ import techreborn.config.TechRebornConfig;
import techreborn.events.ApplyArmorToDamageHandler;
import techreborn.events.OreDepthSyncHandler;
import techreborn.events.UseBlockHandler;
import techreborn.init.*;
import techreborn.init.FluidGeneratorRecipes;
import techreborn.init.FuelRecipes;
import techreborn.init.ModLoot;
import techreborn.init.ModRecipes;
import techreborn.init.ModSounds;
import techreborn.init.TRBlockEntities;
import techreborn.init.TRCauldronBehavior;
import techreborn.init.TRContent;
import techreborn.init.TRDispenserBehavior;
import techreborn.init.template.TechRebornTemplates;
import techreborn.items.DynamicCellItem;
import techreborn.packets.ServerboundPackets;
@ -55,10 +60,6 @@ public class TechReborn implements ModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
public static TechReborn INSTANCE;
public static ItemGroup ITEMGROUP = FabricItemGroupBuilder.build(
new Identifier("techreborn", "item_group"),
() -> new ItemStack(TRContent.NUKE));
@Override
public void onInitialize() {
INSTANCE = this;

View file

@ -30,13 +30,14 @@ import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.registry.Registries;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import reborncore.api.blockentity.IMachineGuiHandler;
@ -142,7 +143,7 @@ public final class GuiType<T extends BlockEntity> implements IMachineGuiHandler
private GuiType(Identifier identifier) {
this.identifier = identifier;
this.screenHandlerType = Registry.register(Registry.SCREEN_HANDLER, identifier, new ExtendedScreenHandlerType<>(getScreenHandlerFactory()));
this.screenHandlerType = Registry.register(Registries.SCREEN_HANDLER, identifier, new ExtendedScreenHandlerType<>(getScreenHandlerFactory()));
TYPES.put(identifier, this);
}

View file

@ -35,6 +35,9 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtHelper;
import net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket;
import net.minecraft.registry.Registries;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.RegistryWrapper;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
@ -48,6 +51,7 @@ import reborncore.common.network.ClientBoundPackets;
import reborncore.common.network.NetworkManager;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.util.StringUtils;
import reborncore.common.util.WorldUtils;
import team.reborn.energy.api.EnergyStorage;
import team.reborn.energy.api.base.SimpleSidedEnergyContainer;
import techreborn.blocks.cable.CableBlock;
@ -232,7 +236,7 @@ public class CableBlockEntity extends BlockEntity
energyContainer.amount = compound.getLong("energy");
}
if (compound.contains("cover")) {
cover = NbtHelper.toBlockState(compound.getCompound("cover"));
cover = NbtHelper.toBlockState(WorldUtils.getBlockRegistryWrapper(world), compound.getCompound("cover"));
} else {
cover = null;
}

View file

@ -104,7 +104,7 @@ public class IronAlloyFurnaceBlockEntity extends AbstractIronMachineBlockEntity
return false;
if (inventory.getStack(OUTPUT_SLOT).isEmpty())
return true;
if (!inventory.getStack(OUTPUT_SLOT).isItemEqualIgnoreDamage(itemstack))
if (!inventory.getStack(OUTPUT_SLOT).isItemEqual(itemstack))
return false;
int result = inventory.getStack(OUTPUT_SLOT).getCount() + itemstack.getCount();
return result <= inventory.getStackLimit() && result <= inventory.getStack(OUTPUT_SLOT).getMaxCount();

View file

@ -98,7 +98,7 @@ public class IronFurnaceBlockEntity extends AbstractIronMachineBlockEntity imple
// Fast fail if there is no input, no point checking the recipes if the machine is empty
return ItemStack.EMPTY;
}
if (previousStack.isItemEqualIgnoreDamage(stack) && !previousValid){
if (previousStack.isItemEqual(stack) && !previousValid){
return ItemStack.EMPTY;
}
@ -127,7 +127,7 @@ public class IronFurnaceBlockEntity extends AbstractIronMachineBlockEntity imple
if (inventory.getStack(OUTPUT_SLOT).isEmpty()) {
inventory.setStack(OUTPUT_SLOT, resultStack.copy());
} else if (inventory.getStack(OUTPUT_SLOT).isItemEqualIgnoreDamage(resultStack)) {
} else if (inventory.getStack(OUTPUT_SLOT).isItemEqual(resultStack)) {
inventory.getStack(OUTPUT_SLOT).increment(resultStack.getCount());
}
experience += getExperienceFor();
@ -158,7 +158,7 @@ public class IronFurnaceBlockEntity extends AbstractIronMachineBlockEntity imple
ItemStack outputSlotStack = inventory.getStack(OUTPUT_SLOT);
if (outputSlotStack.isEmpty())
return true;
if (!outputSlotStack.isItemEqualIgnoreDamage(outputStack))
if (!outputSlotStack.isItemEqual(outputStack))
return false;
int result = outputSlotStack.getCount() + outputStack.getCount();
return result <= inventory.getStackLimit() && result <= outputStack.getMaxCount();

View file

@ -115,7 +115,7 @@ public class FluidReplicatorBlockEntity extends GenericMachineBlockEntity implem
private static IInventoryAccess<FluidReplicatorBlockEntity> getInventoryAccess() {
return (slotID, stack, face, direction, blockEntity) -> {
if (slotID == 0) {
return stack.isItemEqualIgnoreDamage(TRContent.Parts.UU_MATTER.getStack());
return stack.isItemEqual(TRContent.Parts.UU_MATTER.getStack());
}
return true;
};
@ -132,7 +132,7 @@ public class FluidReplicatorBlockEntity extends GenericMachineBlockEntity implem
@Override
public BuiltScreenHandler createScreenHandler(int syncID, PlayerEntity player) {
return new ScreenHandlerBuilder("fluidreplicator").player(player.getInventory()).inventory().hotbar().addInventory()
.blockEntity(this).fluidSlot(1, 124, 35).filterSlot(0, 55, 45, stack -> stack.isItemEqualIgnoreDamage(TRContent.Parts.UU_MATTER.getStack()))
.blockEntity(this).fluidSlot(1, 124, 35).filterSlot(0, 55, 45, stack -> stack.isItemEqual(TRContent.Parts.UU_MATTER.getStack()))
.outputSlot(2, 124, 55).energySlot(3, 8, 72).sync(tank).syncEnergyValue().syncCrafterValue().addInventory()
.create(this, syncID);
}

View file

@ -8,7 +8,7 @@ import net.minecraft.item.Items;
import net.minecraft.loot.context.LootContext;
import net.minecraft.loot.context.LootContextParameters;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.tag.BlockTags;
import net.minecraft.registry.tag.BlockTags;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;

View file

@ -125,7 +125,7 @@ public class AutoCraftingTableBlockEntity extends PowerAcceptorBlockEntity
if (inventoryCrafting == null) {
inventoryCrafting = new CraftingInventory(new ScreenHandler(null, -1) {
@Override
public ItemStack transferSlot(PlayerEntity player, int index) {
public ItemStack quickMove(PlayerEntity player, int index) {
return ItemStack.EMPTY;
}

View file

@ -28,8 +28,9 @@ import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registry;
import reborncore.api.blockentity.IUpgrade;
import reborncore.common.screen.BuiltScreenHandler;
import reborncore.common.screen.BuiltScreenHandlerProvider;
@ -56,7 +57,7 @@ public class RecyclerBlockEntity extends GenericMachineBlockEntity implements Bu
if ((item instanceof IUpgrade)) {
return false;
}
return !TechRebornConfig.recyclerBlackList.contains(Registry.ITEM.getId(item).toString());
return !TechRebornConfig.recyclerBlackList.contains(Registries.ITEM.getId(item).toString());
}
// BuiltScreenHandlerProvider

View file

@ -433,7 +433,7 @@ public class RollingMachineBlockEntity extends PowerAcceptorBlockEntity
}
@Override
public ItemStack transferSlot(PlayerEntity player, int index) {
public ItemStack quickMove(PlayerEntity player, int slot) {
return ItemStack.EMPTY;
}

View file

@ -87,7 +87,7 @@ public class MatterFabricatorBlockEntity extends PowerAcceptorBlockEntity
}
public int getValue(ItemStack itemStack) {
if (itemStack.isItemEqualIgnoreDamage(TRContent.Parts.SCRAP.getStack())) {
if (itemStack.isItemEqual(TRContent.Parts.SCRAP.getStack())) {
return 200;
} else if (itemStack.getItem() == TRContent.SCRAP_BOX) {
return 2000;

View file

@ -155,7 +155,7 @@ public class AdjustableSUBlockEntity extends EnergyStorageBlockEntity implements
// MachineBaseBlockEntity
@Override
public boolean isUpgradeValid(IUpgrade upgrade, ItemStack stack) {
return stack.isItemEqual(new ItemStack(TRContent.Upgrades.SUPERCONDUCTOR.item));
return stack.isOf(TRContent.Upgrades.SUPERCONDUCTOR.item);
}
// IContainerProvider

View file

@ -181,7 +181,7 @@ public class CableBlock extends BlockWithEntity implements Waterloggable {
public BlockState getStateForNeighborUpdate(BlockState ourState, Direction direction, BlockState otherState,
WorldAccess worldIn, BlockPos ourPos, BlockPos otherPos) {
if (ourState.get(WATERLOGGED)) {
worldIn.createAndScheduleFluidTick(ourPos, Fluids.WATER, Fluids.WATER.getTickRate(worldIn));
worldIn.scheduleFluidTick(ourPos, Fluids.WATER, Fluids.WATER.getTickRate(worldIn));
}
return ourState;
}

View file

@ -37,7 +37,7 @@ import net.minecraft.state.StateManager;
import net.minecraft.state.property.BooleanProperty;
import net.minecraft.state.property.DirectionProperty;
import net.minecraft.state.property.Properties;
import net.minecraft.tag.BlockTags;
import net.minecraft.registry.tag.BlockTags;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult;

View file

@ -24,15 +24,16 @@
package techreborn.blocks.misc;
import net.minecraft.block.WoodenButtonBlock;
import net.minecraft.block.ButtonBlock;
import net.minecraft.sound.SoundEvents;
import techreborn.utils.InitUtils;
/**
* @author drcrazy
*/
public class RubberButtonBlock extends WoodenButtonBlock {
public class RubberButtonBlock extends ButtonBlock {
public RubberButtonBlock() {
super(InitUtils.setupRubberBlockSettings(true, 0.5F, 0.5F));
super(InitUtils.setupRubberBlockSettings(true, 0.5F, 0.5F), 30, true, SoundEvents.BLOCK_WOODEN_BUTTON_CLICK_OFF, SoundEvents.BLOCK_WOODEN_BUTTON_CLICK_ON);
}
}

View file

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

View file

@ -25,6 +25,7 @@
package techreborn.blocks.misc;
import net.minecraft.block.PressurePlateBlock;
import net.minecraft.sound.SoundEvents;
import techreborn.utils.InitUtils;
/**
@ -33,7 +34,7 @@ import techreborn.utils.InitUtils;
public class RubberPressurePlateBlock extends PressurePlateBlock {
public RubberPressurePlateBlock() {
super(PressurePlateBlock.ActivationRule.EVERYTHING, InitUtils.setupRubberBlockSettings(true, 0.5F, 0.5F));
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);
}
}

View file

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

View file

@ -694,4 +694,10 @@ public class TechRebornConfig {
@Config(config = "world", category = "generation", key = "enableOilLakeGeneration", comment = "When enabled oil lakes will generate in the world")
public static boolean enableOilLakeGeneration = true;
@Config(config = "world", category = "generation", key = "enableMetallurgistGeneration", comment = "When enabled metallurgist houses can generate in villages")
public static boolean enableMetallurgistGeneration = true;
@Config(config = "world", category = "generation", key = "enableElectricianGeneration", comment = "When enabled electrician houses can generate in villages")
public static boolean enableElectricianGeneration = true;
}

View file

@ -32,6 +32,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.Item.Settings;
import net.minecraft.item.Items;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.sound.SoundEvents;
import reborncore.RebornRegistry;
import reborncore.common.powerSystem.RcEnergyTier;
import team.reborn.energy.api.EnergyStorage;
@ -72,10 +73,11 @@ public class ModRegistry {
registerApis();
TRVillager.registerVillagerTrades();
TRVillager.registerWanderingTraderTrades();
TRVillager.registerVillagerHouses();
}
private static void registerBlocks() {
Settings itemGroup = new Item.Settings().group(TechReborn.ITEMGROUP);
Settings itemGroup = new Item.Settings();
Arrays.stream(Ores.values()).forEach(value -> RebornRegistry.registerBlock(value.block, itemGroup));
StorageBlocks.blockStream().forEach(block -> RebornRegistry.registerBlock(block, itemGroup));
Arrays.stream(MachineBlocks.values()).forEach(value -> {
@ -103,7 +105,7 @@ public class ModRegistry {
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_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)), "rubber_fence_gate"), 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_STAIR = InitUtils.setup(new BlockRubberPlankStair(), "rubber_stair"), 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);

View file

@ -26,7 +26,7 @@ package techreborn.events;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import net.minecraft.block.Block;
import net.minecraft.util.registry.Registry;
import net.minecraft.registry.Registries;
import reborncore.common.network.NetworkManager;
import techreborn.packets.ClientboundPackets;
import techreborn.world.OreDepth;
@ -52,7 +52,7 @@ public final class OreDepthSyncHandler {
public static void updateDepths(List<OreDepth> list) {
synchronized (OreDepthSyncHandler.class) {
oreDepthMap = list.stream()
.collect(Collectors.toMap(oreDepth -> Registry.BLOCK.get(oreDepth.identifier()), Function.identity()));
.collect(Collectors.toMap(oreDepth -> Registries.BLOCK.get(oreDepth.identifier()), Function.identity()));
}
}

Some files were not shown because too many files have changed in this diff Show more