diff --git a/game/client/src/main/java/net/minecraft/client/gui/ScreenCredits.java b/game/client/src/main/java/net/minecraft/client/gui/ScreenCredits.java index 93a125867..723b1c19a 100644 --- a/game/client/src/main/java/net/minecraft/client/gui/ScreenCredits.java +++ b/game/client/src/main/java/net/minecraft/client/gui/ScreenCredits.java @@ -2,13 +2,19 @@ package net.minecraft.client.gui; import com.mojang.logging.LogUtils; import net.minecraft.client.gui.modelviewer.elements.ListenerButtonElement; +import net.minecraft.client.option.GameSettings; import net.minecraft.client.render.Scissor; +import net.minecraft.client.render.font.Alignment; import net.minecraft.client.render.renderer.GLRenderer; import net.minecraft.client.render.renderer.Shaders; import net.minecraft.client.render.tessellator.TessellatorGeneral; +import net.minecraft.client.sound.SoundEngine; import net.minecraft.core.lang.I18n; import net.minecraft.core.net.command.TextFormatting; +import net.minecraft.core.sound.SoundCategory; import net.minecraft.core.util.helper.MathHelper; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.slf4j.Logger; @@ -51,7 +57,10 @@ public class ScreenCredits extends Screen { private List lines; - private float hue = 0; + private final List creditElements = new ArrayList<>(); + private int creditsHeight = 0; + private @Nullable CreditElement overlayElement = null; + public ScreenCredits(Screen parent) { super(parent); @@ -75,6 +84,37 @@ public class ScreenCredits extends Screen { this.lines = new ArrayList<>(); this.lines.add("An error occurred while loading the credits."); } + + this.creditsHeight = 0; + for (int i = 0, size = this.lines.size(); i < size; i++) { + String line = this.lines.get(i); + + CreditElement element = null; + if (line.startsWith("*")) { + element = new Category(line.substring(1)); + } else if (line.startsWith("!")) { + element = new Thanks(line.substring(1)); + } else { + StringBuilder contributions = new StringBuilder(); + int j = i; + while (j + 1 < size) { + String credit = this.lines.get(j + 1); + if (credit.startsWith("--")) { + if (contributions.isEmpty()) contributions.append("Contributions: \n"); + contributions.append(" • ").append(credit.substring(2).strip()).append("\n"); + j++; + } else { + break; + } + } + i = j; + element = new Credit(line, contributions.toString()); + } + if (element != null) { + this.creditsHeight += element.height(this); + this.creditElements.add(element); + } + } } @Override @@ -92,7 +132,7 @@ public class ScreenCredits extends Screen { @Override public void tick() { - if (!this.playing) { + if (!this.playing || !SoundEngine.getSoundSystem().playing(SoundEngine.STREAMING)) { this.mc.sndManager.playMusic(SONGS[(int) (Math.random() * SONGS.length)], 0, 0, 0, 1.0f, 1.0f); this.playing = true; } @@ -123,31 +163,37 @@ public class ScreenCredits extends Screen { drawStringCenteredNoShadow(this.fontRenderer, I18n.getInstance().translateKey("gui.credits.label.title"), this.width / 2, 5, 0xFFFFFF); Scissor.enable(0, this.top, this.width, this.bottom - this.top); - drawContent(); + drawContent(mx, my, partialTick); Scissor.disable(); - - this.hue = (this.hue + 1) % 360f; } - private void drawContent() { + private void drawContent(int mx, int my, float partialTick) { this.mc.textureManager.loadTexture("/assets/minecraft/textures/gui/title/mclogo.png").bind(); GLRenderer.setColor4f(1.0F, 1.0F, 1.0F, 1.0F); drawTexturedModalRect(this.width / 2 - 274 / 2, 30 - (int) this.scrollAmount, 0, 0, 274, 50, 1d / 274, 1d / 50); - for (int i = 0; i < this.lines.size(); i++) { - String line = this.lines.get(i); - if (line.startsWith("*")) { - line = TextFormatting.BOLD + line.substring(1); - int lineWidth = MathHelper.ceil(this.fontRenderer.stringWidthDouble(line)) + line.length(); - drawStringNoShadow(this.fontRenderer, line, this.width / 2 - lineWidth / 2, 100 + i * 12 - (int) this.scrollAmount, 0xFFFFFF); - } else if (line.startsWith("!")) { - int rgb = Color.HSBtoRGB(this.hue / 360f, 1.0f, 1.0f); - line = TextFormatting.BOLD + line.substring(1); - int lineWidth = MathHelper.ceil(this.fontRenderer.stringWidthDouble(line)) + line.length(); - drawStringNoShadow(this.fontRenderer, line, this.width / 2 - lineWidth / 2, 100 + i * 12 - (int) this.scrollAmount, rgb); - } else { - drawStringNoShadow(this.fontRenderer, line, MathHelper.ceil((this.width - this.fontRenderer.stringWidthDouble(line)) / 2), 100 + i * 12 - (int) this.scrollAmount, 0x7F7F7F); - } + int y = (int) (100 - this.scrollAmount); + for (int i = 0, size = this.creditElements.size(); i < size; i++) { + CreditElement element = this.creditElements.get(i); + + int elemWidth = element.width(this); + int elemHeight = element.height(this); + + int minX = (this.width - elemWidth)/2; + int maxX = (this.width + elemWidth)/2; + int minY = y; + int maxY = y + elemHeight; + +// drawBox(minX, minY, maxX, maxY, 0xFFAAAAAA, 1); // Render clickable box bounds + + boolean hovered = minX <= mx && mx <= maxX && minY <= my && my <= maxY; + + element.render(this, y, hovered, partialTick); + y += elemHeight + 1; + } + + if (this.overlayElement != null) { + this.overlayElement.overlayRender(this, mx, my, partialTick); } } @@ -200,6 +246,39 @@ public class ScreenCredits extends Screen { this.clickX = mx; this.clickY = my; + + if (buttonNum == 0) { + if (this.overlayElement != null) { + int elemWidth = this.overlayElement.overlayWidth(this); + int elemHeight = this.overlayElement.overlayHeight(this); + + int minX = this.overlayElement.overlayX(this); + int maxX = minX + elemWidth; + int minY = this.overlayElement.overlayY(this); + int maxY = minY + elemHeight; + if (minX > mx || mx > maxX || minY > my || my > maxY) { + this.overlayElement = null; + } + } else { + int y = (int) (100 - this.scrollAmount); + for (int i = 0, size = this.creditElements.size(); i < size; i++) { + CreditElement element = this.creditElements.get(i); + + int elemWidth = element.width(this); + int elemHeight = element.height(this); + + int minX = (this.width - elemWidth)/2; + int maxX = (this.width + elemWidth)/2; + int minY = y; + int maxY = y + elemHeight; + if (minX <= mx && mx <= maxX && minY <= my && my <= maxY) { + element.onClick(this); + break; + } + y += elemHeight + 1; + } + } + } } @Override @@ -254,7 +333,7 @@ public class ScreenCredits extends Screen { } private int getTotalPageHeight() { - return 100 + this.lines.size() * 12; + return 150 + this.creditsHeight; } @Override @@ -266,4 +345,176 @@ public class ScreenCredits extends Screen { this.clickY = null; } } + + @Override + public void keyPressed(char eventCharacter, int eventKey, int mx, int my) { + if (this.overlayElement != null) { + if (eventKey == Keyboard.KEY_BACK) { + this.overlayElement = null; + } + if (eventKey == Keyboard.KEY_ESCAPE) { + this.overlayElement = null; + } + } else { + super.keyPressed(eventCharacter, eventKey, mx, my); + } + } + + public interface CreditElement { + void render(@NotNull ScreenCredits screenCredits, int y, boolean hovered, float partialTick); + void onClick(@NotNull ScreenCredits screenCredits); + int height(@NotNull ScreenCredits screenCredits); + int width(@NotNull ScreenCredits screenCredits); + + default void overlayRender(@NotNull ScreenCredits screenCredits, int mx, int my, float partialTick) {} + default int overlayX(@NotNull ScreenCredits screenCredits) { return 0; } + default int overlayY(@NotNull ScreenCredits screenCredits) { return 0; } + default int overlayWidth(@NotNull ScreenCredits screenCredits) { return 0; } + default int overlayHeight(@NotNull ScreenCredits screenCredits) { return 0; } + } + public record Category(@NotNull String name) implements CreditElement { + + @Override + public void render(@NotNull ScreenCredits screenCredits, int y, boolean hovered, float partialTick) { + screenCredits.fontRenderer.renderCentered(this.name, (screenCredits.width - this.name.length())/2, y).setZ(screenCredits.zLevel).setColor(0xFFFFFF).setBold().call(); + } + + @Override + public void onClick(@NotNull ScreenCredits screenCredits) { + + } + + @Override + public int height(@NotNull ScreenCredits screenCredits) { + return screenCredits.fontRenderer.getFont().fontHeight() + 1; + } + + @Override + public int width(@NotNull ScreenCredits screenCredits) { + return MathHelper.ceil(screenCredits.fontRenderer.stringWidthDouble(this.name)) + this.name.length(); + } + } + public record Credit(@NotNull String name, @NotNull String contributions) implements CreditElement{ + @Override + public void render(@NotNull ScreenCredits screenCredits, int y, boolean hovered, float partialTick) { + screenCredits.fontRenderer.renderCentered(this.name, screenCredits.width/2, y).setZ(screenCredits.zLevel).setColor(hovered ? 0xFFFFA0 : 0x7F7F7F).call(); + } + + @Override + public void onClick(@NotNull ScreenCredits screenCredits) { + screenCredits.overlayElement = this; + screenCredits.mc.sndManager.playSound("random.click", SoundCategory.GUI_SOUNDS, 1.0F, 1.0F); + } + + @Override + public int height(@NotNull ScreenCredits screenCredits) { + return screenCredits.fontRenderer.getFont().fontHeight() + 1; + } + + @Override + public int width(@NotNull ScreenCredits screenCredits) { + return MathHelper.ceil(screenCredits.fontRenderer.stringWidthDouble(this.name)); + } + + @Override + public void overlayRender(@NotNull ScreenCredits screenCredits, int mx, int my, float partialTick) { + final int color = GameSettings.GUI_BACKGROUND_COLOR.value.getARGB(); + screenCredits.drawGradientRect(0, 0, screenCredits.width, screenCredits.height, color, color); + + int width = overlayWidth(screenCredits); + int height = overlayHeight(screenCredits); + int x = overlayX(screenCredits); + int y = overlayY(screenCredits); + + int top = y + topSize(screenCredits); + int bottom = y + height - bottomSize(screenCredits); + + screenCredits.drawRect(x - 1, y - 1, x + width + 1, y + height + 1, 0xFFA0A0A0); + + TessellatorGeneral t = GLRenderer.getTessellator(); + final float f = 32F; + t.startDrawingQuads(); + screenCredits.mc.textureManager.loadTexture("/assets/minecraft/textures/gui/background.png").bind(); + t.setColorOpaque1i(0x404040); + t.addVertexWithUV(x, y + height, 0.0D, 0.0D, (float) height / f); + t.addVertexWithUV(x + width, y + height, 0.0D, (float) width / f, (float) height / f); + t.addVertexWithUV(x + width, y, 0.0D, (float) width / f, 0); + t.addVertexWithUV(x, y, 0.0D, 0.0D, 0); + + t.setColorOpaque1i(0x202020); + t.addVertexWithUV(x, bottom, 0.0D, 0, (float) (top - bottom) / f); + t.addVertexWithUV(x + width, bottom, 0.0D, (float) width / f, (float) (top - bottom) / f); + t.addVertexWithUV(x + width, top, 0.0D, (float) width / f, 0); + t.addVertexWithUV(x, top, 0.0D, 0, 0); + + t.draw(); + + screenCredits.fontRenderer.renderWidthConstrained(this.name, (screenCredits.width - width)/2, y + 2, width - 20).setAlignment(Alignment.CENTERED).setZ(screenCredits.zLevel).setColor(0xFFFFFF).setBold().call(); + screenCredits.fontRenderer.renderWidthConstrained(this.contributions, x + 1, y + topSize(screenCredits) + 2, width - 2).setColor(0x7F7F7F).call(); + } + + @Override + public int overlayX(@NotNull ScreenCredits screenCredits) { + return (screenCredits.width - overlayWidth(screenCredits))/2; + } + + @Override + public int overlayY(@NotNull ScreenCredits screenCredits) { + return (screenCredits.height - overlayHeight(screenCredits))/2; + } + + private int topSize(@NotNull ScreenCredits screenCredits) { + return (int) screenCredits.fontRenderer.heightOfConstrainedChars(this.name, overlayWidth(screenCredits) - 20) + 4; + } + + private int bottomSize(@NotNull ScreenCredits screenCredits) { + return 0; + } + + private int contentSize(@NotNull ScreenCredits screenCredits) { + if (this.contributions.isBlank()) return 0; + int width = overlayWidth(screenCredits); + return (int) screenCredits.fontRenderer.heightOfConstrainedChars(this.contributions, width) + 4; + } + + @Override + public int overlayWidth(@NotNull ScreenCredits screenCredits) { + return 200; + } + + @Override + public int overlayHeight(@NotNull ScreenCredits screenCredits) { + return topSize(screenCredits) + contentSize(screenCredits) + bottomSize(screenCredits); + } + } + public static class Thanks implements CreditElement { + private final @NotNull String message; + + public Thanks(@NotNull String message) { + this.message = message; + } + + private float hue = 0; + @Override + public void render(@NotNull ScreenCredits screenCredits, int y, boolean hovered, float partialTick) { + int rgb = Color.HSBtoRGB(this.hue / 360f, 1.0f, 1.0f); + screenCredits.fontRenderer.renderCentered(this.message, (screenCredits.width - this.message.length())/2, y).setZ(screenCredits.zLevel).setColor(rgb).setBold().call(); + this.hue = (this.hue + 1) % 360f; + } + + @Override + public void onClick(@NotNull ScreenCredits screenCredits) { + + } + + @Override + public int height(@NotNull ScreenCredits screenCredits) { + return screenCredits.fontRenderer.getFont().fontHeight() + 1; + } + + @Override + public int width(@NotNull ScreenCredits screenCredits) { + return MathHelper.ceil(screenCredits.fontRenderer.stringWidthDouble(this.message)) - this.message.length(); + } + } } diff --git a/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelDispatcher.java b/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelDispatcher.java index e75c5ebd0..5fe4cd627 100644 --- a/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelDispatcher.java +++ b/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelDispatcher.java @@ -374,15 +374,38 @@ public final class BlockModelDispatcher addDispatch(new BlockModelGenericTorch<>(Blocks.TORCH_REDSTONE_IDLE, "minecraft:block/torch_redstone_idle").render3D(false)); addDispatch(new BlockModelGenericTorch<>(Blocks.TORCH_REDSTONE_ACTIVE, "minecraft:block/torch_redstone_active").render3D(false)); - addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_STONE, "minecraft:block/button/stone")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_STONE, "minecraft:block/button/stone/stone")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_BASALT, "minecraft:block/button/stone/basalt")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_LIMESTONE, "minecraft:block/button/stone/limestone")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_GRANITE, "minecraft:block/button/stone/granite")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_PERMAFROST, "minecraft:block/button/stone/permafrost")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_NETHERRACK, "minecraft:block/button/stone/netherrack")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_GLOOMSTONE, "minecraft:block/button/stone/gloomstone")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_SANDSTONE, "minecraft:block/button/stone/sandstone")); + addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_BRIMSTONE, "minecraft:block/button/stone/brimstone")); addDispatch(new BlockModelGenericButton<>(Blocks.BUTTON_PLANKS, "minecraft:block/button/planks/oak")); addDispatch(new BlockModelGenericButtonPainted<>(Blocks.BUTTON_PLANKS_PAINTED)); addDispatch(new BlockModelGenericLever<>(Blocks.LEVER_COBBLE_STONE).render3D(false)); - addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_STONE, "minecraft:block/pressure_plate/stone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_STONE, "minecraft:block/pressure_plate/stone/stone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_BASALT, "minecraft:block/pressure_plate/stone/basalt")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_LIMESTONE, "minecraft:block/pressure_plate/stone/limestone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_GRANITE, "minecraft:block/pressure_plate/stone/granite")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_PERMAFROST, "minecraft:block/pressure_plate/stone/permafrost")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_NETHERRACK, "minecraft:block/pressure_plate/stone/netherrack")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_GLOOMSTONE, "minecraft:block/pressure_plate/stone/gloomstone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_SANDSTONE, "minecraft:block/pressure_plate/stone/sandstone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_BRIMSTONE, "minecraft:block/pressure_plate/stone/brimstone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_PLANKS_OAK, "minecraft:block/pressure_plate/planks/oak")); - addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_COBBLE_STONE, "minecraft:block/pressure_plate/cobbled_stone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_COBBLE_STONE, "minecraft:block/pressure_plate/cobbled/stone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_COBBLE_BASALT, "minecraft:block/pressure_plate/cobbled/basalt")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_COBBLE_LIMESTONE, "minecraft:block/pressure_plate/cobbled/limestone")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_COBBLE_GRANITE, "minecraft:block/pressure_plate/cobbled/granite")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_COBBLE_PERMAFROST, "minecraft:block/pressure_plate/cobbled/permafrost")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_COBBLE_NETHERRACK, "minecraft:block/pressure_plate/cobbled/netherrack")); + addDispatch(new BlockModelGenericPressurePlate<>(Blocks.PRESSURE_PLATE_COBBLE_GLOOMSTONE, "minecraft:block/pressure_plate/cobbled/gloomstone")); addDispatch(new BlockModelGenericPressurePlatePainted<>(Blocks.PRESSURE_PLATE_PLANKS_OAK_PAINTED)); addDispatch(new BlockModelGenericVeryRotatable<>(Blocks.MOTION_SENSOR_IDLE, loadDataModel("minecraft:block/motion_sensor_idle"))); diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/active.json new file mode 100644 index 000000000..ec9406da9 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/active", + "textures": { + "texture": "minecraft:block/basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/idle.json new file mode 100644 index 000000000..1d00ac2f3 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/idle", + "textures": { + "texture": "minecraft:block/basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/inventory.json new file mode 100644 index 000000000..1979eff8f --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/basalt/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/inventory", + "textures": { + "texture": "minecraft:block/basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/active.json new file mode 100644 index 000000000..2b1f8486f --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/active", + "textures": { + "texture": "minecraft:block/brimstone/top" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/idle.json new file mode 100644 index 000000000..1b6e9b297 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/idle", + "textures": { + "texture": "minecraft:block/brimstone/top" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/inventory.json new file mode 100644 index 000000000..7f9bf3f0b --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/brimstone/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/inventory", + "textures": { + "texture": "minecraft:block/brimstone/top" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/active.json new file mode 100644 index 000000000..3d25d0f86 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/active", + "textures": { + "texture": "minecraft:block/gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/idle.json new file mode 100644 index 000000000..4fcc65b00 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/idle", + "textures": { + "texture": "minecraft:block/gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/inventory.json new file mode 100644 index 000000000..0e1b6af20 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/gloomstone/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/inventory", + "textures": { + "texture": "minecraft:block/gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/active.json new file mode 100644 index 000000000..7f0e84e79 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/active", + "textures": { + "texture": "minecraft:block/granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/idle.json new file mode 100644 index 000000000..9e8144b8a --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/idle", + "textures": { + "texture": "minecraft:block/granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/inventory.json new file mode 100644 index 000000000..a0366180c --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/granite/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/inventory", + "textures": { + "texture": "minecraft:block/granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/active.json new file mode 100644 index 000000000..15d114b81 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/active", + "textures": { + "texture": "minecraft:block/limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/idle.json new file mode 100644 index 000000000..165f0bc11 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/idle", + "textures": { + "texture": "minecraft:block/limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/inventory.json new file mode 100644 index 000000000..8f68bedce --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/limestone/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/inventory", + "textures": { + "texture": "minecraft:block/limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/active.json new file mode 100644 index 000000000..8fa60c78e --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/active", + "textures": { + "texture": "minecraft:block/netherrack" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/idle.json new file mode 100644 index 000000000..d3e91e918 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/idle", + "textures": { + "texture": "minecraft:block/netherrack" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/inventory.json new file mode 100644 index 000000000..8e009c83f --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/netherrack/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/inventory", + "textures": { + "texture": "minecraft:block/netherrack" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/active.json new file mode 100644 index 000000000..925151f59 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/active", + "textures": { + "texture": "minecraft:block/permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/idle.json new file mode 100644 index 000000000..64cd5d28f --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/idle", + "textures": { + "texture": "minecraft:block/permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/inventory.json new file mode 100644 index 000000000..72808d2db --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/permafrost/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/inventory", + "textures": { + "texture": "minecraft:block/permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/active.json new file mode 100644 index 000000000..b3f9c6095 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/active", + "textures": { + "texture": "minecraft:block/sandstone/top" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/idle.json new file mode 100644 index 000000000..a6e29bb70 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/idle", + "textures": { + "texture": "minecraft:block/sandstone/top" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/inventory.json new file mode 100644 index 000000000..12c3371d0 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/sandstone/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button/inventory", + "textures": { + "texture": "minecraft:block/sandstone/top" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/stone/active.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/button/stone/active.json rename to game/client/src/main/resources/assets/minecraft/models/block/button/stone/stone/active.json diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/stone/idle.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/button/stone/idle.json rename to game/client/src/main/resources/assets/minecraft/models/block/button/stone/stone/idle.json diff --git a/game/client/src/main/resources/assets/minecraft/models/block/button/stone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/button/stone/stone/inventory.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/button/stone/inventory.json rename to game/client/src/main/resources/assets/minecraft/models/block/button/stone/stone/inventory.json diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/active.json new file mode 100644 index 000000000..e993f008b --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/cobbled_basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/idle.json new file mode 100644 index 000000000..0c9728c8e --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/cobbled_basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/inventory.json new file mode 100644 index 000000000..b471911d2 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/basalt/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/cobbled_basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/active.json new file mode 100644 index 000000000..1861476f2 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/cobbled_gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/idle.json new file mode 100644 index 000000000..b3a02a69a --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/cobbled_gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/inventory.json new file mode 100644 index 000000000..793558e8c --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/gloomstone/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/cobbled_gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/active.json new file mode 100644 index 000000000..3c317d36b --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/cobbled_granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/idle.json new file mode 100644 index 000000000..6478c1941 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/cobbled_granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/inventory.json new file mode 100644 index 000000000..88f64bea6 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/granite/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/cobbled_granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/active.json new file mode 100644 index 000000000..2d625bbe8 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/cobbled_limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/idle.json new file mode 100644 index 000000000..462d15788 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/cobbled_limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/inventory.json new file mode 100644 index 000000000..8395213c8 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/limestone/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/cobbled_limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/active.json new file mode 100644 index 000000000..2a969b5b7 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/cobbled_netherrack/normal" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/idle.json new file mode 100644 index 000000000..757e2c367 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/cobbled_netherrack/normal" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/inventory.json new file mode 100644 index 000000000..ebf858d73 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/netherrack/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/cobbled_netherrack/normal" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/active.json new file mode 100644 index 000000000..c31b5f1e6 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/cobbled_permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/idle.json new file mode 100644 index 000000000..96957441a --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/cobbled_permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/inventory.json new file mode 100644 index 000000000..ebc2580bf --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/permafrost/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/cobbled_permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled_stone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/stone/active.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled_stone/active.json rename to game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/stone/active.json diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled_stone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/stone/idle.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled_stone/idle.json rename to game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/stone/idle.json diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled_stone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/stone/inventory.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled_stone/inventory.json rename to game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/cobbled/stone/inventory.json diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/active.json new file mode 100644 index 000000000..b57b9847c --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/idle.json new file mode 100644 index 000000000..682313c9d --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/inventory.json new file mode 100644 index 000000000..1979a92ac --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/basalt/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/basalt" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/active.json new file mode 100644 index 000000000..639df149e --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/active.json @@ -0,0 +1,27 @@ +{ + "textures": { + "texture": "minecraft:block/brimstone/side", + "top": "minecraft:block/brimstone/top", + "bottom": "minecraft:block/brimstone/bottom", + "overlay": "#texture", + "particle_up": "#texture", + "particle_down": "#texture", + "particle_north": "#texture", + "particle_south": "#texture", + "particle_west": "#texture", + "particle_east": "#texture" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 0.5, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, + "north": { "uv": [ 1, 15, 15, 15.5 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15, 15, 15.5 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15, 15, 15.5 ], "texture": "#texture" }, + "east": { "uv": [ 1, 15, 15, 15.5 ], "texture": "#texture" } + } + } + ] +} diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/idle.json new file mode 100644 index 000000000..b929e64fe --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/idle.json @@ -0,0 +1,27 @@ +{ "parent": "block/block_thin", + "textures": { + "texture": "minecraft:block/brimstone/side", + "top": "minecraft:block/brimstone/top", + "bottom": "minecraft:block/brimstone/bottom", + "overlay": "#texture", + "particle_up": "#texture", + "particle_down": "#texture", + "particle_north": "#texture", + "particle_south": "#texture", + "particle_west": "#texture", + "particle_east": "#texture" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 1, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, + "north": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" }, + "east": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" } + } + } + ] +} diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/inventory.json new file mode 100644 index 000000000..b51977735 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/brimstone/inventory.json @@ -0,0 +1,54 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "parent": "block/block", + "display": { + "gui": { + "rotation": [ 30, 225, 0 ], + "translation": [ 0, 2, 0], + "scale":[ 0.625, 0.625, 0.625 ] + }, + "thirdperson_righthand": { + "rotation": [ 75, 45, 0 ], + "translation": [ 0, 0.5, 2], + "scale": [ 0.375, 0.375, 0.375 ] + }, + "firstperson_righthand": { + "rotation": [ 0, 45, 0 ], + "translation": [ 0, 2.2, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 225, 0 ], + "translation": [ 0, 2.2, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + } + }, + "textures": { + "texture": "minecraft:block/brimstone/side", + "top": "minecraft:block/brimstone/top", + "bottom": "minecraft:block/brimstone/bottom", + "overlay": "#texture", + "particle_up": "#texture", + "particle_down": "#texture", + "particle_north": "#texture", + "particle_south": "#texture", + "particle_west": "#texture", + "particle_east": "#texture" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 4, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-1, 0, -1]}, + "faces": { + "north": {"uv": [0, 12, 16, 16], "texture": "#texture"}, + "east": {"uv": [0, 12, 16, 16], "texture": "#texture"}, + "south": {"uv": [0, 12, 16, 16], "texture": "#texture"}, + "west": {"uv": [0, 12, 16, 16], "texture": "#texture"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down"} + } + } + ] +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/active.json new file mode 100644 index 000000000..0d0bb8b40 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/idle.json new file mode 100644 index 000000000..f267786ac --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/inventory.json new file mode 100644 index 000000000..2f7cc5e66 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/gloomstone/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/gloomstone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/active.json new file mode 100644 index 000000000..fbfe790d4 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/idle.json new file mode 100644 index 000000000..ee1281c76 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/inventory.json new file mode 100644 index 000000000..ee4e43a5c --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/granite/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/granite" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/active.json new file mode 100644 index 000000000..92e50eabe --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/idle.json new file mode 100644 index 000000000..9766c790a --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/inventory.json new file mode 100644 index 000000000..c69fc049c --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/limestone/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/limestone" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/active.json new file mode 100644 index 000000000..ea2d9ec49 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/netherrack" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/idle.json new file mode 100644 index 000000000..18efe477f --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/netherrack" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/inventory.json new file mode 100644 index 000000000..835ce70fa --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/netherrack/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/netherrack" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/active.json new file mode 100644 index 000000000..296a2ce20 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/active.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/active", + "textures": { + "texture": "minecraft:block/permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/idle.json new file mode 100644 index 000000000..cc1b05c01 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/idle.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/idle", + "textures": { + "texture": "minecraft:block/permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/inventory.json new file mode 100644 index 000000000..62e1078ab --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/permafrost/inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate/inventory", + "textures": { + "texture": "minecraft:block/permafrost" + } +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/active.json new file mode 100644 index 000000000..f4521b7e2 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/active.json @@ -0,0 +1,27 @@ +{ + "textures": { + "texture": "minecraft:block/sandstone/side", + "top": "minecraft:block/sandstone/top", + "bottom": "minecraft:block/sandstone/bottom", + "overlay": "#texture", + "particle_up": "#texture", + "particle_down": "#texture", + "particle_north": "#texture", + "particle_south": "#texture", + "particle_west": "#texture", + "particle_east": "#texture" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 0.5, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, + "north": { "uv": [ 1, 15, 15, 15.5 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15, 15, 15.5 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15, 15, 15.5 ], "texture": "#texture" }, + "east": { "uv": [ 1, 15, 15, 15.5 ], "texture": "#texture" } + } + } + ] +} diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/idle.json new file mode 100644 index 000000000..249121500 --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/idle.json @@ -0,0 +1,27 @@ +{ "parent": "block/block_thin", + "textures": { + "texture": "minecraft:block/sandstone/side", + "top": "minecraft:block/sandstone/top", + "bottom": "minecraft:block/sandstone/bottom", + "overlay": "#texture", + "particle_up": "#texture", + "particle_down": "#texture", + "particle_north": "#texture", + "particle_south": "#texture", + "particle_west": "#texture", + "particle_east": "#texture" + }, + "elements": [ + { "from": [ 1, 0, 1 ], + "to": [ 15, 1, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, + "north": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" }, + "east": { "uv": [ 1, 15, 15, 16 ], "texture": "#texture" } + } + } + ] +} diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/inventory.json new file mode 100644 index 000000000..978e1f42c --- /dev/null +++ b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/sandstone/inventory.json @@ -0,0 +1,54 @@ +{ + "format_version": "1.21.6", + "credit": "Made with Blockbench", + "parent": "block/block", + "display": { + "gui": { + "rotation": [ 30, 225, 0 ], + "translation": [ 0, 2, 0], + "scale":[ 0.625, 0.625, 0.625 ] + }, + "thirdperson_righthand": { + "rotation": [ 75, 45, 0 ], + "translation": [ 0, 0.5, 2], + "scale": [ 0.375, 0.375, 0.375 ] + }, + "firstperson_righthand": { + "rotation": [ 0, 45, 0 ], + "translation": [ 0, 2.2, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 225, 0 ], + "translation": [ 0, 2.2, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + } + }, + "textures": { + "texture": "minecraft:block/sandstone/side", + "top": "minecraft:block/sandstone/top", + "bottom": "minecraft:block/sandstone/bottom", + "overlay": "#texture", + "particle_up": "#texture", + "particle_down": "#texture", + "particle_north": "#texture", + "particle_south": "#texture", + "particle_west": "#texture", + "particle_east": "#texture" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 4, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-1, 0, -1]}, + "faces": { + "north": {"uv": [0, 12, 16, 16], "texture": "#texture"}, + "east": {"uv": [0, 12, 16, 16], "texture": "#texture"}, + "south": {"uv": [0, 12, 16, 16], "texture": "#texture"}, + "west": {"uv": [0, 12, 16, 16], "texture": "#texture"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down"} + } + } + ] +} \ No newline at end of file diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/active.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/stone/active.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/active.json rename to game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/stone/active.json diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/idle.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/stone/idle.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/idle.json rename to game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/stone/idle.json diff --git a/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/inventory.json b/game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/stone/inventory.json similarity index 100% rename from game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/inventory.json rename to game/client/src/main/resources/assets/minecraft/models/block/pressure_plate/stone/stone/inventory.json diff --git a/game/client/src/main/resources/credits.txt b/game/client/src/main/resources/credits.txt index c5369ac55..6a970dbbe 100644 --- a/game/client/src/main/resources/credits.txt +++ b/game/client/src/main/resources/credits.txt @@ -6,6 +6,7 @@ jonkadelic Bestsoft100 Bigjango Flamarine +Kirisamé Soup (@kirisoup) Martin (@sunsetsatellite) MelonMojito (@watermelonmojito) NebulaBC @@ -19,31 +20,69 @@ thaboar *Community Moderators Jej Chainstar Orknarok_666 (@derperu) +Silvycakes (@sx22.) *Community Helpers -bones (@frazzelbones) -Crowbar Cruxy -Silveon (sx22.) +phoebruary *Special Thanks AndroidDr (@Pedro270707) +--Brigadier command parser implementation Astronomical360 +--Eucalyptus log texture tweak +bones (@frazzelbones) +--Retired BTA helper +Celeste +--Alternate current mod implementation cloud54 +--Gloomstone textures +--Marigold flower textures +--Stacked flower textures +--Timer texture +Crowbar +--Retired BTA helper DirtPiper Doop (@brokendoop) +--Netherrack Textures +--Steel fence +--Cobbled gloomstone +--Gloomstone bricks +--Sorched Logs Gungun974 +--Improved packet processing +--Bug fixes H2_AIL +--Permafrost block sound +--Achievement unlocked sound effect +--Page turn sound effect LukeisStuff +--Retired BTA helper +--Textures +--Nether update work mzov4j +--Log top texture adjustments +--Bone shale texture +--Mossy cobblestone variants +--Deer model +PedroThePanda64 (@agreathornedowl) +--Shader fixes and improvements +--Dog music track fix +ph +--Venison texture +phosphean +--Rubyglass bud texture +Rikai +--Alternate current mod implementation Snowman64 +--7.2 Trailer Tocinin +--Painting iron frame texture +--Soul slate texture +--Additional noteblock instruments +--Reverse flag button texture Vivian (@vivianfox.) Zaraz7 -ph -Rikai -Celeste -gregwoods !Thank you for playing !Better than Adventure! \ No newline at end of file diff --git a/game/client/src/main/resources/shaders/particle.vsh b/game/client/src/main/resources/shaders/particle.vsh index 8e00c2704..fe9e62ba4 100644 --- a/game/client/src/main/resources/shaders/particle.vsh +++ b/game/client/src/main/resources/shaders/particle.vsh @@ -29,5 +29,5 @@ void main() { LightMapCoord = unpackLightCoord(); TexCoord = aUv + (((aMesh * vec2(1, -1)) + vec2(1, 1))/2.0) * aUvSizes; - gl_Position = matrices.projection * matrices.view * model * (vec4(aPos, 1) + matrices.viewInv * vec4(aMesh.x, aMesh.y, 0.0, 1.0) * aScale); + gl_Position = matrices.projection * matrices.view * model * (vec4(aPos, 1) + matrices.viewInv * vec4(aMesh, 0.0, 0.0) * aScale); } diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicRail.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicRail.java index 9784c72c7..09d99f924 100644 --- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicRail.java +++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicRail.java @@ -87,7 +87,9 @@ public class BlockLogicRail extends BlockLogic implements ISupportable { @Override public void onPlacedByWorld(@NotNull World world, @NotNull TilePosc tilePos) { + world.noNeighborUpdate = true; // TODO: this should just be a temporary solution. refactor rails later! performRailTurn(world, tilePos, true); + world.noNeighborUpdate = false; if (this.block == Blocks.RAIL_POWERED) { onNeighborChanged(world, tilePos, this.block); } diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicTorch.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicTorch.java index 540fa475e..41b10f73c 100644 --- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicTorch.java +++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicTorch.java @@ -5,7 +5,9 @@ import net.minecraft.core.block.support.ISupport; import net.minecraft.core.block.support.ISupportable; import net.minecraft.core.block.support.PartialSupport; import net.minecraft.core.entity.Mob; +import net.minecraft.core.entity.player.Player; import net.minecraft.core.enums.EnumDropCause; +import net.minecraft.core.item.ItemStack; import net.minecraft.core.util.helper.Side; import net.minecraft.core.world.World; import net.minecraft.core.world.WorldSource; @@ -73,47 +75,23 @@ public class BlockLogicTorch extends BlockLogic implements ISupportable { } @Override - public void onPlacedByMob(@NotNull World world, @NotNull TilePosc tilePos, @NotNull Side side, @NotNull Mob mob, double xHit, double yHit) { - if (side.isHorizontal()) side = side.opposite(); - onPlacedOnSide(world, tilePos, side, xHit, yHit); - } + public int getPlacedData( + @Nullable Player player, @NotNull ItemStack itemStack, @NotNull World world, + @NotNull TilePosc tilePos, @NotNull Side side, double xHit, double yHit + ) { + if (player == null && side.isHorizontal()) side = side.opposite(); - @Override - public void onPlacedOnSide(@NotNull World world, @NotNull TilePosc tilePos, @NotNull Side side, double xHit, double yHit) { int orientation = SIDE_NONE; - if (side.isHorizontal()) side = side.opposite(); - switch (side) { - case TOP: - if (isSupported(world, tilePos, Side.BOTTOM)) { - orientation = SIDE_BOTTOM; - } - break; - case NORTH: - if (isSupported(world, tilePos, Side.SOUTH)) { - orientation = SIDE_SOUTH; - } - break; - case SOUTH: - if (isSupported(world, tilePos, Side.NORTH)) { - orientation = SIDE_NORTH; - } - break; - case WEST: - if (isSupported(world, tilePos, Side.EAST)) { - orientation = SIDE_EAST; - } - break; - case EAST: - if (isSupported(world, tilePos, Side.WEST)) { - orientation = SIDE_WEST; - } - break; - } - if (orientation == SIDE_NONE) { - orientation = getDefaultOrientation(world, tilePos); - } - world.setBlockDataNotify(tilePos, orientation); - dropTorchIfCantStay(world, tilePos); + if (isSupported(world, tilePos, side.opposite())) orientation = switch (side) { + default -> SIDE_NONE; + case TOP -> SIDE_BOTTOM; + case NORTH -> SIDE_SOUTH; + case SOUTH -> SIDE_NORTH; + case WEST -> SIDE_EAST; + case EAST -> SIDE_WEST; + }; + if (orientation == SIDE_NONE) orientation = getDefaultOrientation(world, tilePos); + return orientation; } public int getDefaultOrientation(@NotNull World world, @NotNull TilePosc tilePos) { @@ -141,9 +119,12 @@ public class BlockLogicTorch extends BlockLogic implements ISupportable { @Override public void onPlacedByWorld(@NotNull World world, @NotNull TilePosc tilePos) { - int orientation = getDefaultOrientation(world, tilePos); - if (orientation != SIDE_NONE) { - world.setBlockDataNotify(tilePos, orientation); + int data = world.getBlockData(tilePos); + if (data == SIDE_NONE) { + int orientation = getDefaultOrientation(world, tilePos); + if (orientation != SIDE_NONE) { + world.setBlockDataNotify(tilePos, orientation); + } } dropTorchIfCantStay(world, tilePos); } diff --git a/game/core/src/main/java/net/minecraft/core/block/Blocks.java b/game/core/src/main/java/net/minecraft/core/block/Blocks.java index ba2da2dcf..64ba75c1b 100644 --- a/game/core/src/main/java/net/minecraft/core/block/Blocks.java +++ b/game/core/src/main/java/net/minecraft/core/block/Blocks.java @@ -1516,6 +1516,76 @@ public final class Blocks { .withSound(BlockSounds.SAND).withHardness(0.5f).withOverrideColor(MaterialColor.paintedYellow) .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.NETHER_SURFACE_BLOCK, BlockTags.NETHER_MOBS_SPAWN, BlockTags.CAVES_CUT_THROUGH, BlockTags.INFINITE_BURN_SULFURIC); + public static final @NotNull Block PRESSURE_PLATE_COBBLE_BASALT = register("pressureplate.cobble.basalt", "minecraft:block/pressure_plate_cobble_basalt", 1100, (b) -> new BlockLogicPressurePlate<>(b, Player.class, Materials.BASALT)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_COBBLE_LIMESTONE = register("pressureplate.cobble.limestone", "minecraft:block/pressure_plate_cobble_limestone", 1101, (b) -> new BlockLogicPressurePlate<>(b, Player.class, Materials.LIMESTONE)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_COBBLE_GRANITE = register("pressureplate.cobble.granite", "minecraft:block/pressure_plate_cobble_granite", 1102, (b) -> new BlockLogicPressurePlate<>(b, Player.class, Materials.GRANITE)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_COBBLE_PERMAFROST = register("pressureplate.cobble.permafrost", "minecraft:block/pressure_plate_cobble_permafrost", 1103, (b) -> new BlockLogicPressurePlate<>(b, Player.class, Materials.PERMAFROST)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_COBBLE_NETHERRACK = register("pressureplate.cobble.netherrack", "minecraft:block/pressure_plate_cobble_netherrack", 1104, (b) -> new BlockLogicPressurePlate<>(b, Player.class, Materials.NETHERRACK)) + .withSound(BlockSounds.STONE).withHardness(0.1F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_COBBLE_GLOOMSTONE = register("pressureplate.cobble.gloomstone", "minecraft:block/pressure_plate_cobble_gloomstone", 1105, (b) -> new BlockLogicPressurePlate<>(b, Player.class, Materials.GLOOMSTONE)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + // 1106 and 1107 reserved for cobbled sandstone and brimstone + + public static final @NotNull Block PRESSURE_PLATE_BASALT = register("pressureplate.basalt", "minecraft:block/pressure_plate_basalt", 1110, (b) -> new BlockLogicPressurePlate<>(b, Mob.class, Materials.BASALT)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_LIMESTONE = register("pressureplate.limestone", "minecraft:block/pressure_plate_limestone", 1111, (b) -> new BlockLogicPressurePlate<>(b, Mob.class, Materials.LIMESTONE)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_GRANITE = register("pressureplate.granite", "minecraft:block/pressure_plate_granite", 1112, (b) -> new BlockLogicPressurePlate<>(b, Mob.class, Materials.GRANITE)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_PERMAFROST = register("pressureplate.permafrost", "minecraft:block/pressure_plate_permafrost", 1113, (b) -> new BlockLogicPressurePlate<>(b, Mob.class, Materials.PERMAFROST)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_NETHERRACK = register("pressureplate.netherrack", "minecraft:block/pressure_plate_netherrack", 1114, (b) -> new BlockLogicPressurePlate<>(b, Mob.class, Materials.NETHERRACK)) + .withSound(BlockSounds.STONE).withHardness(0.1F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_GLOOMSTONE = register("pressureplate.gloomstone", "minecraft:block/pressure_plate_gloomstone", 1115, (b) -> new BlockLogicPressurePlate<>(b, Mob.class, Materials.GLOOMSTONE)) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_SANDSTONE = register("pressureplate.sandstone", "minecraft:block/pressure_plate_sandstone", 1116, (b) -> new BlockLogicPressurePlate<>(b, Mob.class, Materials.STONE)) + .withSound(BlockSounds.STONE).withHardness(0.4F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block PRESSURE_PLATE_BRIMSTONE = register("pressureplate.brimstone", "minecraft:block/pressure_plate_brimstone", 1117, (b) -> new BlockLogicPressurePlate<>(b, Mob.class, Materials.STONE)) + .withSound(BlockSounds.STONE).withHardness(0.9F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + + public static final @NotNull Block BUTTON_BASALT = register("button.basalt", "minecraft:block/button_basalt", 1120, BlockLogicButton::new) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.BROKEN_BY_FLUIDS, BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block BUTTON_LIMESTONE = register("button.limestone", "minecraft:block/button_limestone", 1121, BlockLogicButton::new) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.BROKEN_BY_FLUIDS, BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block BUTTON_GRANITE = register("button.granite", "minecraft:block/button_granite", 1122, BlockLogicButton::new) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.BROKEN_BY_FLUIDS, BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block BUTTON_PERMAFROST = register("button.permafrost", "minecraft:block/button_permafrost", 1123, BlockLogicButton::new) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.BROKEN_BY_FLUIDS, BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block BUTTON_NETHERRACK = register("button.netherrack", "minecraft:block/button_netherrack", 1124, BlockLogicButton::new) + .withSound(BlockSounds.STONE).withHardness(0.1F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.BROKEN_BY_FLUIDS, BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block BUTTON_GLOOMSTONE = register("button.gloomstone", "minecraft:block/button_gloomstone", 1125, BlockLogicButton::new) + .withSound(BlockSounds.STONE).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.BROKEN_BY_FLUIDS, BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block BUTTON_SANDSTONE = register("button.sandstone", "minecraft:block/button_sandstone", 1126, BlockLogicButton::new) + .withSound(BlockSounds.STONE).withHardness(0.4F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.BROKEN_BY_FLUIDS, BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static final @NotNull Block BUTTON_BRIMSTONE = register("button.brimstone", "minecraft:block/button_brimstone", 1127, BlockLogicButton::new) + .withSound(BlockSounds.STONE).withHardness(0.9F).withDisabledNeighborNotifyOnMetadataChange() + .withTags(BlockTags.BROKEN_BY_FLUIDS, BlockTags.MINEABLE_BY_PICKAXE, BlockTags.PREVENT_MOB_SPAWNS); + public static Block register(String key, String namespaceId, int id, BlockLogicSupplier logicSupplier) { Block container = new Block<>(id, key, namespaceId, logicSupplier); diff --git a/game/core/src/main/java/net/minecraft/core/block/piston/BlockLogicPistonBase.java b/game/core/src/main/java/net/minecraft/core/block/piston/BlockLogicPistonBase.java index 5235ee1cb..596da0a28 100644 --- a/game/core/src/main/java/net/minecraft/core/block/piston/BlockLogicPistonBase.java +++ b/game/core/src/main/java/net/minecraft/core/block/piston/BlockLogicPistonBase.java @@ -512,8 +512,6 @@ public class BlockLogicPistonBase extends BlockLogic { @Override public void onPlacedByWorld(@NotNull World world, @NotNull TilePosc tilePos) { if (world.isClientSide) return; - final var d = NEW_FORMAT_SIGNATURE.set(world.getBlockData(tilePos), 1); - world.setBlockData(tilePos, d); this.signalUpdate(world, tilePos); } @@ -584,6 +582,12 @@ public class BlockLogicPistonBase extends BlockLogic { : super.getPistonPushReaction(world, tilePos); } + @Override + public void onMoveComplete(@NotNull World world, @NotNull TilePosc tilePos) { + if (world.isClientSide) return; + this.signalUpdate(world, tilePos); + } + @Override public void onRemoved(@NotNull World world, @NotNull TilePosc tilePos, int data) { data = fixLegacyBaseData(world, tilePos, this, data); diff --git a/game/core/src/main/java/net/minecraft/core/data/registry/Registries.java b/game/core/src/main/java/net/minecraft/core/data/registry/Registries.java index 6d0139818..1ec5676fe 100644 --- a/game/core/src/main/java/net/minecraft/core/data/registry/Registries.java +++ b/game/core/src/main/java/net/minecraft/core/data/registry/Registries.java @@ -125,8 +125,30 @@ public class Registries extends Registry> { woodenButtonsList.add(Blocks.BUTTON_PLANKS.getDefaultStack()); woodenPressurePlatesList.add(Blocks.PRESSURE_PLATE_PLANKS_OAK.getDefaultStack()); buttonsList.add(Blocks.BUTTON_STONE.getDefaultStack()); + buttonsList.add(Blocks.BUTTON_BASALT.getDefaultStack()); + buttonsList.add(Blocks.BUTTON_LIMESTONE.getDefaultStack()); + buttonsList.add(Blocks.BUTTON_GRANITE.getDefaultStack()); + buttonsList.add(Blocks.BUTTON_PERMAFROST.getDefaultStack()); + buttonsList.add(Blocks.BUTTON_NETHERRACK.getDefaultStack()); + buttonsList.add(Blocks.BUTTON_GLOOMSTONE.getDefaultStack()); + buttonsList.add(Blocks.BUTTON_SANDSTONE.getDefaultStack()); + buttonsList.add(Blocks.BUTTON_BRIMSTONE.getDefaultStack()); pressurePlatesList.add(Blocks.PRESSURE_PLATE_STONE.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_BASALT.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_LIMESTONE.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_GRANITE.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_PERMAFROST.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_NETHERRACK.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_GLOOMSTONE.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_SANDSTONE.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_BRIMSTONE.getDefaultStack()); pressurePlatesList.add(Blocks.PRESSURE_PLATE_COBBLE_STONE.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_COBBLE_BASALT.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_COBBLE_LIMESTONE.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_COBBLE_GRANITE.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_COBBLE_PERMAFROST.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_COBBLE_NETHERRACK.getDefaultStack()); + pressurePlatesList.add(Blocks.PRESSURE_PLATE_COBBLE_GLOOMSTONE.getDefaultStack()); for (final DyeColor color : DyeColor.values()) { plankStackList.add(new ItemStack(Blocks.PLANKS_OAK_PAINTED, 1, color.blockMeta)); diff --git a/game/core/src/main/java/net/minecraft/core/item/ItemPebble.java b/game/core/src/main/java/net/minecraft/core/item/ItemPebble.java index 1cecb614d..2625ad6ef 100644 --- a/game/core/src/main/java/net/minecraft/core/item/ItemPebble.java +++ b/game/core/src/main/java/net/minecraft/core/item/ItemPebble.java @@ -94,7 +94,7 @@ public class ItemPebble extends Item implements IDispensable { } // Regular placement, as all else fails - if (world.canBlockIdBePlacedAt(Blocks.OVERLAY_PEBBLES.id(), blockPos, false, side) && !pebble.isSupported(world, blockPos, Side.BOTTOM)) { + if (world.canBlockIdBePlacedAt(Blocks.OVERLAY_PEBBLES.id(), blockPos, false, side) && pebble.isSupported(world, blockPos, Side.BOTTOM)) { if (world.setBlockTypeNotify(blockPos, Blocks.OVERLAY_PEBBLES)) { Blocks.OVERLAY_PEBBLES.onPlacedByMob(world, blockPos, side, player, xHit, yHit); world.playBlockSoundEffect(player, blockPos.x() + 0.5F, blockPos.y() + 0.5F, blockPos.z() + 0.5F, Blocks.OVERLAY_PEBBLES, EnumBlockSoundEffectType.PLACE); diff --git a/game/core/src/main/java/net/minecraft/core/item/block/ItemBlock.java b/game/core/src/main/java/net/minecraft/core/item/block/ItemBlock.java index b49f0c2e6..ce196dd97 100644 --- a/game/core/src/main/java/net/minecraft/core/item/block/ItemBlock.java +++ b/game/core/src/main/java/net/minecraft/core/item/block/ItemBlock.java @@ -38,6 +38,12 @@ public class ItemBlock extends Item { @NotNull ItemStack selfStack, @NotNull World world, @Nullable Player player, @NotNull TilePosc blockPos, @NotNull Side side, double xHit, double yHit ) { + final boolean placeNextToExisting = !world.canPlaceInsideBlock(blockPos) || + (this.block.hasTag(BlockTags.PLACE_OVERWRITES) && this.block == world.getBlockType(blockPos)); + + if (placeNextToExisting) blockPos = blockPos.add(side.direction(), new TilePos()); + if (!world.canBlockIdBePlacedAt(this.block.id(), blockPos, false, side)) return false; + final int meta = getPlacedData(selfStack, world, player, blockPos, side, xHit, yHit); return this.placeWithMeta(selfStack, world, player, blockPos, meta, side, xHit, yHit); } @@ -46,16 +52,7 @@ public class ItemBlock extends Item { @NotNull ItemStack selfStack, @NotNull World world, @Nullable Player player, @NotNull TilePosc blockPos, int meta, @NotNull Side side, double xHit, double yHit ) { - if (selfStack.stackSize <= 0) { - return false; - } - final boolean placeNextToExisting = !world.canPlaceInsideBlock(blockPos) || - (this.block.hasTag(BlockTags.PLACE_OVERWRITES) && this.block == world.getBlockType(blockPos)); - - if (placeNextToExisting) blockPos = blockPos.add(side.direction(), new TilePos()); - - if (!world.canBlockIdBePlacedAt(this.block.id(), blockPos, false, side)) return false; - + if (selfStack.stackSize <= 0) return false; final var pbloc = world.getBlockType(blockPos); final int pdata = world.getBlockData(blockPos); diff --git a/game/core/src/main/java/net/minecraft/core/player/inventory/CreativeBlocks.java b/game/core/src/main/java/net/minecraft/core/player/inventory/CreativeBlocks.java index 3382db5d9..5056f4e21 100644 --- a/game/core/src/main/java/net/minecraft/core/player/inventory/CreativeBlocks.java +++ b/game/core/src/main/java/net/minecraft/core/player/inventory/CreativeBlocks.java @@ -431,11 +431,33 @@ public final class CreativeBlocks { add(list, Blocks.LEVER_COBBLE_STONE); add(list, Blocks.BUTTON_STONE); + add(list, Blocks.BUTTON_BASALT); + add(list, Blocks.BUTTON_LIMESTONE); + add(list, Blocks.BUTTON_GRANITE); + add(list, Blocks.BUTTON_PERMAFROST); + add(list, Blocks.BUTTON_NETHERRACK); + add(list, Blocks.BUTTON_GLOOMSTONE); + add(list, Blocks.BUTTON_SANDSTONE); + add(list, Blocks.BUTTON_BRIMSTONE); add(list, Blocks.BUTTON_PLANKS); addPainted(list, Blocks.BUTTON_PLANKS_PAINTED, painted(Blocks.BUTTON_PLANKS_PAINTED)); add(list, Blocks.PRESSURE_PLATE_STONE); + add(list, Blocks.PRESSURE_PLATE_BASALT); + add(list, Blocks.PRESSURE_PLATE_LIMESTONE); + add(list, Blocks.PRESSURE_PLATE_GRANITE); + add(list, Blocks.PRESSURE_PLATE_PERMAFROST); + add(list, Blocks.PRESSURE_PLATE_NETHERRACK); + add(list, Blocks.PRESSURE_PLATE_GLOOMSTONE); + add(list, Blocks.PRESSURE_PLATE_SANDSTONE); + add(list, Blocks.PRESSURE_PLATE_BRIMSTONE); add(list, Blocks.PRESSURE_PLATE_COBBLE_STONE); + add(list, Blocks.PRESSURE_PLATE_COBBLE_BASALT); + add(list, Blocks.PRESSURE_PLATE_COBBLE_LIMESTONE); + add(list, Blocks.PRESSURE_PLATE_COBBLE_GRANITE); + add(list, Blocks.PRESSURE_PLATE_COBBLE_PERMAFROST); + add(list, Blocks.PRESSURE_PLATE_COBBLE_NETHERRACK); + add(list, Blocks.PRESSURE_PLATE_COBBLE_GLOOMSTONE); add(list, Blocks.PRESSURE_PLATE_PLANKS_OAK); addPainted(list, Blocks.PRESSURE_PLATE_PLANKS_OAK_PAINTED, painted(Blocks.PRESSURE_PLATE_PLANKS_OAK_PAINTED)); diff --git a/game/core/src/main/java/net/minecraft/core/player/inventory/menu/MenuTrommel.java b/game/core/src/main/java/net/minecraft/core/player/inventory/menu/MenuTrommel.java index 05a3ef5ea..39b2c7c8b 100644 --- a/game/core/src/main/java/net/minecraft/core/player/inventory/menu/MenuTrommel.java +++ b/game/core/src/main/java/net/minecraft/core/player/inventory/menu/MenuTrommel.java @@ -113,7 +113,7 @@ public class MenuTrommel extends MenuAbstract { if(action == InventoryAction.MOVE_SIMILAR) { if(slot.index >= INVENTORY_SLOTS_START && slot.index < HOTBAR_SLOTS_START + ContainerInventory.HOTBAR_SIZE) { // Full ContainerInventory - return getSlots(HOTBAR_SLOTS_START, ContainerInventory.MAIN_INVENTORY_SIZE, false); + return getSlots(INVENTORY_SLOTS_START, ContainerInventory.MAIN_INVENTORY_SIZE, false); } } return null; diff --git a/game/core/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLabyrinth.java b/game/core/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLabyrinth.java index 9581f8d1c..f922fa452 100644 --- a/game/core/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLabyrinth.java +++ b/game/core/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLabyrinth.java @@ -3,7 +3,7 @@ package net.minecraft.core.world.generate.feature; import net.minecraft.core.WeightedRandomBag; import net.minecraft.core.WeightedRandomLootObject; import net.minecraft.core.block.BlockLogicChest; -import net.minecraft.core.block.BlockLogicRotatable; +import net.minecraft.core.block.BlockLogicSlab; import net.minecraft.core.block.entity.TileEntityChest; import net.minecraft.core.block.entity.TileEntityDispenser; import net.minecraft.core.block.entity.TileEntityMobSpawner; @@ -14,6 +14,7 @@ import net.minecraft.core.enums.HumanArmorShape; import net.minecraft.core.item.IArmorItem; import net.minecraft.core.item.Item; import net.minecraft.core.item.Items; +import net.minecraft.core.util.helper.Direction; import net.minecraft.core.item.ItemStack; import net.minecraft.core.world.World; import net.minecraft.core.world.biome.Biome; @@ -37,10 +38,13 @@ public class WorldFeatureLabyrinth extends WorldFeature int brickBlockA = Blocks.BRICK_STONE_POLISHED.id(); int brickBlockB = Blocks.BRICK_STONE_POLISHED_MOSSY.id(); int slabBlock = Blocks.SLAB_STONE_POLISHED.id(); + int pressurePlateBlock = Blocks.PRESSURE_PLATE_COBBLE_STONE.id(); public ItemStack treasureItem; public WeightedRandomBag chestLoot; public WeightedRandomBag dispenserLoot; public WeightedRandomBag spawnerMonsters; + public static final int wallTrapChanceInv = 32; + public static final int floorTrapChanceInv = 64; private int @Nullable[] platformPos = null; private int @Nullable[] lastDungeon = null; @@ -61,6 +65,7 @@ public class WorldFeatureLabyrinth extends WorldFeature brickBlockA = Blocks.BRICK_SANDSTONE.id(); brickBlockB = Blocks.BRICK_SANDSTONE.id(); slabBlock = Blocks.SLAB_SANDSTONE.id(); + pressurePlateBlock = Blocks.PRESSURE_PLATE_SANDSTONE.id(); } else if (biome == Biomes.OVERWORLD_TAIGA || biome == Biomes.OVERWORLD_TUNDRA || biome == Biomes.OVERWORLD_GLACIER) { @@ -68,6 +73,8 @@ public class WorldFeatureLabyrinth extends WorldFeature wallBlockB = Blocks.COBBLE_PERMAFROST.id(); brickBlockA = Blocks.BRICK_PERMAFROST.id(); brickBlockB = Blocks.BRICK_PERMAFROST.id(); + slabBlock = Blocks.SLAB_PERMAFROST_POLISHED.id(); + pressurePlateBlock = Blocks.PRESSURE_PLATE_COBBLE_PERMAFROST.id(); isCold = true; } else @@ -88,6 +95,7 @@ public class WorldFeatureLabyrinth extends WorldFeature wallBlockB = Blocks.COBBLE_LIMESTONE_MOSSY.id(); brickBlockA = brickBlockB = Blocks.BRICK_LIMESTONE.id(); slabBlock = Blocks.SLAB_LIMESTONE_POLISHED.id(); + pressurePlateBlock = Blocks.PRESSURE_PLATE_COBBLE_LIMESTONE.id(); } else if (design == 2) // Granite { @@ -95,6 +103,7 @@ public class WorldFeatureLabyrinth extends WorldFeature wallBlockB = Blocks.COBBLE_GRANITE_MOSSY.id(); brickBlockA = brickBlockB = Blocks.BRICK_GRANITE.id(); slabBlock = Blocks.SLAB_GRANITE_POLISHED.id(); + pressurePlateBlock = Blocks.PRESSURE_PLATE_COBBLE_GRANITE.id(); } else if (design == 3) // Basalt { @@ -102,6 +111,7 @@ public class WorldFeatureLabyrinth extends WorldFeature wallBlockB = Blocks.COBBLE_BASALT_MOSSY.id(); brickBlockA = brickBlockB = Blocks.BRICK_BASALT.id(); slabBlock = Blocks.SLAB_BASALT_POLISHED.id(); + pressurePlateBlock = Blocks.PRESSURE_PLATE_COBBLE_BASALT.id(); } } @@ -172,44 +182,37 @@ public class WorldFeatureLabyrinth extends WorldFeature public void generateBranch(World world, Random random, int blockX, int blockY, int blockZ) { - boolean generateTrapOnWall = false; + int xDir = Direction.EAST.id; for(int x = blockX - 2; x <= blockX + 2; x++) { boolean xWallCheck = x == blockX - 2 || x == blockX + 2; + if (x == blockX) xDir ^= 1; + for (int y = blockY - 2; y <= blockY + 1; y++) { boolean yWallCheck = y == blockY - 2; + + int zDir = Direction.SOUTH.id; for (int z = blockZ - 2; z <= blockZ + 2; z++) { boolean zWallCheck = z == blockZ - 2 || z == blockZ + 2; + if (z == blockZ) zDir ^= 1; - if(canReplace(world, x, y, z)) { - if (xWallCheck && zWallCheck) { - world.setBlockWithNotify(x, y, z, random.nextInt(4) == 0 ? brickBlockB : brickBlockA); - } - else if (xWallCheck || zWallCheck) { - world.setBlockWithNotify(x, y, z, wallBlockB); - } - else - if (yWallCheck) - world.setBlockWithNotify(x, y, z, wallBlockB); - else world.setBlockWithNotify(x, y, z, 0); + if (!canReplace(world, x, y, z)) continue; - //generate traps - if (!generateTrapOnWall && (xWallCheck || zWallCheck)) { - if ((x == blockZ || z == blockZ) && y == blockY) { - world.setBlockWithNotify(x, y, z, Blocks.MOTION_SENSOR_IDLE.id()); - BlockLogicRotatable.setDefaultDirection(world, new TilePos(x, y, z)); - world.setBlockWithNotify(x, y - 1, z, Blocks.DISPENSER_COBBLE_STONE.id()); - BlockLogicRotatable.setDefaultDirection(world, new TilePos(x, y - 1, z)); - TileEntityDispenser tileEntityDispenser = (TileEntityDispenser) world.getTileEntity(x, blockY - 1, z); - int k4 = 0; - while (k4 < 3) { - ItemStack itemstack = pickDispenserLootItem(random); - if (itemstack != null) - tileEntityDispenser.setItem(random.nextInt(tileEntityDispenser.getContainerSize()), itemstack); - k4++; - } - generateTrapOnWall = true; + int block = 0; + if (xWallCheck && zWallCheck) block = random.nextInt(4) == 0 ? brickBlockB : brickBlockA; + else if (xWallCheck || zWallCheck || yWallCheck) block = wallBlockB; - } + world.setBlockWithNotify(x, y, z, block); + + switch (y - blockY) { + case 0 -> { + if (block == 0) break; + if (random.nextInt(wallTrapChanceInv) != 0) break; + placeWallTrap(world, random, x, y, z, (xWallCheck) ? xDir : zDir); + } + case -1 -> { + if (block != 0) break; + if (random.nextInt(floorTrapChanceInv) != 0) break; + placeFloorTrap(world, random, x, y, z); } } } @@ -225,6 +228,28 @@ public class WorldFeatureLabyrinth extends WorldFeature } } + private void placeWallTrap(World world, Random random, int x, int y, int z, int dir) { + world.setBlockAndMetadataWithNotify(x, y, z, Blocks.MOTION_SENSOR_IDLE.id(), dir); + world.setBlockAndMetadataWithNotify(x, y-1, z, Blocks.DISPENSER_COBBLE_STONE.id(), dir); + final var dispenser = (TileEntityDispenser) world.getTileEntity(x, y-1, z); + for (int i = 0; i < 3; i++) { + ItemStack itemstack = pickDispenserLootItem(random); + if (itemstack != null) + dispenser.setItem(random.nextInt(dispenser.getContainerSize()), itemstack); + } + } + + private void placeFloorTrap(World world, Random random, int x, int y, int z) { + world.setBlockAndMetadataWithNotify(x, y-1, z, Blocks.DISPENSER_COBBLE_STONE.id(), Direction.UP.id); + world.setBlockRaw(x, y, z, pressurePlateBlock); + final var dispenser = (TileEntityDispenser) world.getTileEntity(x, y-1, z); + for (int i = 0; i < 3; i++) { + ItemStack itemstack = pickDispenserLootItem(random); + if (itemstack != null) + dispenser.setItem(random.nextInt(dispenser.getContainerSize()), itemstack); + } + } + public void generateDrop(World world, Random random, int blockX, int blockY, int blockZ) { if (random.nextBoolean()) generateDungeon(world, random, blockX, blockY, blockZ, false); @@ -268,95 +293,90 @@ public class WorldFeatureLabyrinth extends WorldFeature private boolean canReplace(World world, int x, int y, int z){ if(y <= 11) return false; - if(world.getBlockId(x, y, z) == (brickBlockA) || world.getBlockId(x, y, z) == Blocks.PLANKS_OAK.id() || world.getBlockId(x, y, z) == Blocks.COBWEB.id() || world.getBlockId(x, y, z) == Blocks.BOOKSHELF_PLANKS_OAK.id() || world.getBlockId(x, y, z) == Blocks.MOBSPAWNER.id() || world.getBlockId(x, y, z) == brickBlockB ) + final var block = world.getBlockId(x, y, z); + if (block == (brickBlockA) || block == Blocks.PLANKS_OAK.id() || block == Blocks.COBWEB.id() || block == Blocks.BOOKSHELF_PLANKS_OAK.id() || block == Blocks.MOBSPAWNER.id() || block == brickBlockB ) return false; - if(world.getBlockId(x, y, z) == Blocks.MOTION_SENSOR_IDLE.id() || world.getBlockId(x, y, z) == Blocks.DISPENSER_COBBLE_STONE.id() || world.getBlockId(x, y, z) == Blocks.MOTION_SENSOR_ACTIVE.id()) { + if (block == Blocks.MOTION_SENSOR_IDLE.id() || block == Blocks.MOTION_SENSOR_ACTIVE.id() || block == Blocks.DISPENSER_COBBLE_STONE.id()) { world.removeBlockTileEntity(x, y, z); + if (block == Blocks.DISPENSER_COBBLE_STONE.id()) remove_plate: { + if ((world.getBlockMetadata(x, y, z) & 0b111) != Direction.UP.id) break remove_plate; + if (world.getBlockId(x, y+1, z) != this.pressurePlateBlock) break remove_plate; + world.setBlockWithNotify(x, y+1, z, 0); + } world.setBlockWithNotify(x, y, z, 0); return true; } - return BlockTags.CAVES_CUT_THROUGH.appliesTo(world.getBlock(x, y, z)) || - world.getBlockMaterial(x, y, z) == Materials.GRASS || - world.getBlockMaterial(x, y, z) == Materials.DIRT || - world.getBlockMaterial(x, y, z).isStone() || - world.getBlockMaterial(x, y, z) == Materials.SAND || - world.getBlockMaterial(x, y, z) == Materials.MOSS; + final var material = world.getBlockMaterial(x, y, z); + return BlockTags.CAVES_CUT_THROUGH.appliesTo(Blocks.getBlock(block)) || + material == Materials.GRASS || + material == Materials.DIRT || + material.isStone() || + material == Materials.SAND || + material == Materials.MOSS; } private void generateCorridor(World world, Random random, int blockX, int blockY, int blockZ, int rot, int corridorIteration){ + final int height = 2; + final int width = 2; + final int length = 2; + + // imagine if java has `ref` + final int[] xz = new int[2]; + final boolean[] xzWallCheck = new boolean[2]; + final int[] xzDir = new int[2]; + final int xOrZ = rot & 1; + final int zOrX = xOrZ ^ 1; + final int xzCenter = (xOrZ != 0) ? blockX : blockZ; + final int xzWidth = switch (rot) { + default -> 0; + case 0 -> +length; + case 2 -> -length; + case 1 -> -width; + case 3 -> +width; + }; + + xzDir[0] = Direction.EAST.id; + for (xz[0] = blockX - width; xz[0] <= blockX + width; xz[0]++) { + if (xz[0] == blockX) xzDir[0] ^= 1; + xzWallCheck[0] = Math.abs(xz[0] - blockX) == width; + for (int y = blockY - height; y <= blockY + (height - 1); y++) { + final boolean yWallCheck = y == blockY - height; + xzDir[1] = Direction.SOUTH.id; + for (xz[1] = blockZ - length; xz[1] <= blockZ + length; xz[1]++) { + if (xz[1] == blockZ) xzDir[1] ^= 1; + xzWallCheck[1] = Math.abs(xz[1] - blockZ) == width; + + if (!canReplace(world, xz[0], y, xz[1])) continue; + if (xzWallCheck[0] || xzWallCheck[1] || yWallCheck) { + final var isHollow = world.getBlockId(xz[0], y+1, xz[1]) == 0; + if (isHollow && random.nextInt(3) > 0) continue; + } - byte height = 2; - int width = 2; - int length = 2; + int block = 0; + if (yWallCheck) block = (random.nextInt(3) == 0) ? wallBlockB : wallBlockA; + else if (xzWallCheck[xOrZ]) block = wallBlockA; + else if (xz[zOrX] == xzCenter + xzWidth) block = wallBlockA; - for (int x = blockX - width; x <= blockX + width; x++) { - boolean xWallCheck = x == blockX - width || x == blockX + width; - for (int y = blockY - height; y <= blockY + (height - 1); y++) { - boolean yWallCheck = y == blockY - height; - for (int z = blockZ - length; z <= blockZ + length; z++) { - boolean zWallCheck = z == blockZ - length || z == blockZ + length; - //east - if(canReplace(world, x, y, z)) { - if((xWallCheck || zWallCheck || yWallCheck) && world.getBlockId(x, y+1, z) == 0 && random.nextInt(3) > 0) - continue; - if (rot == 0) { - if (xWallCheck) { - world.setBlockWithNotify(x, y, z, wallBlockA); - } - else if (z == blockZ + length) - world.setBlockWithNotify(x, y, z, wallBlockA); - else if (yWallCheck) { - if (random.nextInt(3) == 0) - world.setBlockWithNotify(x, y, z, wallBlockB); - else - world.setBlockWithNotify(x, y, z, wallBlockA); - } - else world.setBlockWithNotify(x, y, z, 0); - } - //south - else if (rot == 1) { - if (x == blockX - width) - world.setBlockWithNotify(x, y, z, wallBlockA); - else if (zWallCheck) - world.setBlockWithNotify(x, y, z, wallBlockA); - else if (yWallCheck) { - if (random.nextInt(3) == 0) - world.setBlockWithNotify(x, y, z, wallBlockB); - else - world.setBlockWithNotify(x, y, z, wallBlockA); - } - else world.setBlockWithNotify(x, y, z, 0); - } - //west - else if (rot == 2) { - if (xWallCheck) - world.setBlockWithNotify(x, y, z, wallBlockA); - else if (z == blockZ - length) - world.setBlockWithNotify(x, y, z, wallBlockA); - else if (yWallCheck){ - if (random.nextInt(3) == 0) - world.setBlockWithNotify(x, y, z, wallBlockB); - else - world.setBlockWithNotify(x, y, z, wallBlockA); - } - else world.setBlockWithNotify(x, y, z, 0); + boolean isHollowSection = block == 0; + + if (isHollowSection) cobweb: { + if (xzWallCheck[0] || xzWallCheck[1]) break cobweb; + if (y != blockY + height - 1) break cobweb; + if (random.nextInt(20) == 0) block = Blocks.COBWEB.id(); + } + world.setBlockWithNotify(xz[0], y, xz[1], block); + + switch (y - blockY) { + case 0 -> { + if (isHollowSection) break; + if (random.nextInt(wallTrapChanceInv) != 0) break; + placeWallTrap(world, random, xz[0], y, xz[1], xzDir[xOrZ]); } - //north - else { - if (x == blockX + width) - world.setBlockWithNotify(x, y, z, wallBlockA); - else if (zWallCheck) - world.setBlockWithNotify(x, y, z, wallBlockA); - else if (yWallCheck){ - if (random.nextInt(3) == 0) - world.setBlockWithNotify(x, y, z, wallBlockB); - else - world.setBlockWithNotify(x, y, z, wallBlockA); - } - else world.setBlockWithNotify(x, y, z, 0); + case -height + 1 -> { + if (!isHollowSection) break; + if (random.nextInt(floorTrapChanceInv) != 0) break; + placeFloorTrap(world, random, xz[0], y, xz[1]); } - if(y == blockY + (height - 1) && !zWallCheck && !xWallCheck && random.nextInt(20)==0) - world.setBlockWithNotify(x, y, z, Blocks.COBWEB.id()); } } } @@ -500,8 +520,14 @@ public class WorldFeatureLabyrinth extends WorldFeature else world.setBlockWithNotify(x, y, z, Blocks.LOG_OAK.id()); } - else - world.setBlockWithNotify(x, y, z, 0); + else { + final var placesTrap = + y == blockY - 1 && + Math.min(Math.abs(x - blockX), Math.abs(z - blockZ)) >= 2 && + random.nextInt(floorTrapChanceInv) == 0; + if (placesTrap) placeFloorTrap(world, random, x, y, z); + else world.setBlockWithNotify(x, y, z, 0); + } } else world.setBlockWithNotify(x, y, z, 0); if (zRoom % 2 == 0 @@ -547,7 +573,7 @@ public class WorldFeatureLabyrinth extends WorldFeature if (x == blockX || z == blockZ) { world.setBlockWithNotify(x, y, z, isCold ? Blocks.OBSIDIAN.id() : Blocks.FLUID_LAVA_FLOWING.id()); } else { - world.setBlockWithNotify(x, y, z, slabBlock); + world.setBlockAndMetadataWithNotify(x, y, z, slabBlock, BlockLogicSlab.STATE_DOUBLE); } else if (random.nextInt(5) == 0) world.setBlockWithNotify(x, y, z, wallBlockB); @@ -581,7 +607,7 @@ public class WorldFeatureLabyrinth extends WorldFeature for (int x = blockX - 1; x <= blockX + 1; x++) { for (int z = blockZ - 1; z <= blockZ + 1; z++) { if (x == blockX && z == blockZ) { - world.setBlockAndMetadataWithNotify(x, blockY - 1, z, slabBlock, 1); + world.setBlockAndMetadataWithNotify(x, blockY - 1, z, slabBlock, BlockLogicSlab.STATE_DOUBLE); } else { world.setBlockWithNotify(x, blockY - 1, z, slabBlock); } diff --git a/game/core/src/main/resources/assets/minecraft/lang/en_US/tile.lang b/game/core/src/main/resources/assets/minecraft/lang/en_US/tile.lang index f337b2865..4b50a3e00 100644 --- a/game/core/src/main/resources/assets/minecraft/lang/en_US/tile.lang +++ b/game/core/src/main/resources/assets/minecraft/lang/en_US/tile.lang @@ -719,6 +719,23 @@ tile.torch.redstone.active.desc=Emits a constant redstone signal. tile.button.stone.name=Stone Button tile.button.stone.desc=Emits a brief redstone signal when pressed. +tile.button.basalt.name=Basalt Button +tile.button.basalt.desc=Emits a brief redstone signal when pressed. +tile.button.limestone.name=Limestnoe Button +tile.button.limestone.desc=Emits a brief redstone signal when pressed. +tile.button.granite.name=Granite Button +tile.button.granite.desc=Emits a brief redstone signal when pressed. +tile.button.permafrost.name=Permafrost Button +tile.button.permafrost.desc=Emits a brief redstone signal when pressed. +tile.button.netherrack.name=Netherrack Button +tile.button.netherrack.desc=Emits a brief redstone signal when pressed. +tile.button.gloomstone.name=Gloomstone Button +tile.button.gloomstone.desc=Emits a brief redstone signal when pressed. +tile.button.sandstone.name=Sandstone Button +tile.button.sandstone.desc=Emits a brief redstone signal when pressed. +tile.button.brimstone.name=Brimstone Button +tile.button.brimstone.desc=Emits a brief redstone signal when pressed. + tile.button.planks.name=Wooden Button tile.button.planks.desc=Emits a brief redstone signal when pressed. @@ -762,10 +779,40 @@ tile.lever.cobble.stone.desc=Allows turning a redstone signal on or off. tile.pressureplate.stone.name=Stone Pressure Plate tile.pressureplate.stone.desc=Emits a redstone signal when living creatures step on it. +tile.pressureplate.basalt.name=Basalt Pressure Plate +tile.pressureplate.basalt.desc=Emits a redstone signal when living creatures step on it. +tile.pressureplate.limestone.name=Limestone Pressure Plate +tile.pressureplate.limestone.desc=Emits a redstone signal when living creatures step on it. +tile.pressureplate.granite.name=Granite Pressure Plate +tile.pressureplate.granite.desc=Emits a redstone signal when living creatures step on it. +tile.pressureplate.permafrost.name=Permafrost Pressure Plate +tile.pressureplate.permafrost.desc=Emits a redstone signal when living creatures step on it. +tile.pressureplate.netherrack.name=Netherrack Pressure Plate +tile.pressureplate.netherrack.desc=Emits a redstone signal when living creatures step on it. +tile.pressureplate.gloomstone.name=Gloomstone Pressure Plate +tile.pressureplate.gloomstone.desc=Emits a redstone signal when living creatures step on it. +tile.pressureplate.sandstone.name=Sandstone Pressure Plate +tile.pressureplate.sandstone.desc=Emits a redstone signal when living creatures step on it. +tile.pressureplate.brimstone.name=Brimstone Pressure Plate +tile.pressureplate.brimstone.desc=Emits a redstone signal when living creatures step on it. + tile.pressureplate.planks.oak.name=Wooden Pressure Plate tile.pressureplate.planks.oak.desc=Emits a redstone signal when anything steps on it. + tile.pressureplate.cobble.stone.name=Cobblestone Pressure Plate tile.pressureplate.cobble.stone.desc=Emits a redstone signal when players step on it. +tile.pressureplate.cobble.basalt.name=Cobbled Basalt Pressure Plate +tile.pressureplate.cobble.basalt.desc=Emits a redstone signal when players step on it. +tile.pressureplate.cobble.limestone.name=Cobbled Limestone Pressure Plate +tile.pressureplate.cobble.limestone.desc=Emits a redstone signal when players step on it. +tile.pressureplate.cobble.granite.name=Cobbled Granite Pressure Plate +tile.pressureplate.cobble.granite.desc=Emits a redstone signal when players step on it. +tile.pressureplate.cobble.permafrost.name=Cobbled Permafrost Pressure Plate +tile.pressureplate.cobble.permafrost.desc=Emits a redstone signal when players step on it. +tile.pressureplate.cobble.netherrack.name=Cobbled Netherrack Pressure Plate +tile.pressureplate.cobble.netherrack.desc=Emits a redstone signal when players step on it. +tile.pressureplate.cobble.gloomstone.name=Cobbled Gloomstone Pressure Plate +tile.pressureplate.cobble.gloomstone.desc=Emits a redstone signal when players step on it. tile.pressureplate.planks.oak.painted.name=Mystery Wooden Plate tile.pressureplate.planks.oak.painted.desc=Emits a redstone signal when anything steps on it.