From 77b544ce4f93f1e77e55dff02b9e2fe3710c0e70 Mon Sep 17 00:00:00 2001 From: yueh Date: Mon, 29 Jun 2020 11:45:25 +0200 Subject: [PATCH 1/6] Refactored drive state sync Removed blinking state for now --- .../appeng/api/storage/cells/CellState.java | 2 +- .../appeng/block/storage/DriveSlotState.java | 6 ++- .../tesr/DriveLedTileEntityRenderer.java | 3 +- .../appeng/tile/storage/ChestTileEntity.java | 40 +++++++++--------- .../appeng/tile/storage/DriveTileEntity.java | 35 +++++++++------ .../blockstates/chest.json | 10 ++++- .../block/chest/cell_state_not_empty.json | 31 ++++++++++++++ .../block/chest/cell_state_not_empty.png | Bin 0 -> 146 bytes 8 files changed, 89 insertions(+), 38 deletions(-) create mode 100644 src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_not_empty.json create mode 100644 src/main/resources/assets/appliedenergistics2/textures/block/chest/cell_state_not_empty.png diff --git a/src/api/java/appeng/api/storage/cells/CellState.java b/src/api/java/appeng/api/storage/cells/CellState.java index c8dfe2299..65af69101 100644 --- a/src/api/java/appeng/api/storage/cells/CellState.java +++ b/src/api/java/appeng/api/storage/cells/CellState.java @@ -50,5 +50,5 @@ public enum CellState { /** * Full cell, technically could have free types */ - FULL, + FULL; } \ No newline at end of file diff --git a/src/main/java/appeng/block/storage/DriveSlotState.java b/src/main/java/appeng/block/storage/DriveSlotState.java index 4cd8306ba..51d00f8ea 100644 --- a/src/main/java/appeng/block/storage/DriveSlotState.java +++ b/src/main/java/appeng/block/storage/DriveSlotState.java @@ -37,6 +37,9 @@ public enum DriveSlotState implements IStringSerializable { // Online and free space ONLINE("online"), + // Online and not space + NOT_EMPTY("not_empty"), + // Types full, space left TYPES_FULL("types_full"), @@ -60,8 +63,9 @@ public enum DriveSlotState implements IStringSerializable { case ABSENT: return DriveSlotState.EMPTY; case EMPTY: - case NOT_EMPTY: return DriveSlotState.ONLINE; + case NOT_EMPTY: + return DriveSlotState.NOT_EMPTY; case TYPES_FULL: return DriveSlotState.TYPES_FULL; case FULL: diff --git a/src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java b/src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java index 8969a7b51..9a1164235 100644 --- a/src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java +++ b/src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java @@ -43,7 +43,8 @@ public class DriveLedTileEntityRenderer extends TileEntityRenderer(DriveSlotState.class); STATE_COLORS.put(DriveSlotState.OFFLINE, new Vector3f(0, 0, 0)); STATE_COLORS.put(DriveSlotState.ONLINE, new Vector3f(0, 1, 0)); - STATE_COLORS.put(DriveSlotState.TYPES_FULL, new Vector3f(0, 0.667f, 0)); + STATE_COLORS.put(DriveSlotState.NOT_EMPTY, new Vector3f(0f, 0.667f, 1)); + STATE_COLORS.put(DriveSlotState.TYPES_FULL, new Vector3f(1, 0.667f, 0)); STATE_COLORS.put(DriveSlotState.FULL, new Vector3f(1, 0, 0)); } diff --git a/src/main/java/appeng/tile/storage/ChestTileEntity.java b/src/main/java/appeng/tile/storage/ChestTileEntity.java index 57db14c31..7e521b998 100644 --- a/src/main/java/appeng/tile/storage/ChestTileEntity.java +++ b/src/main/java/appeng/tile/storage/ChestTileEntity.java @@ -110,6 +110,13 @@ import appeng.util.item.AEItemStack; public class ChestTileEntity extends AENetworkPowerTileEntity implements IMEChest, ITerminalHost, IPriorityHost, IConfigManagerHost, IColorableTile, ITickableTileEntity { + + private static final int BIT_POWER_MASK = Byte.MIN_VALUE; + private static final int BIT_STATE_MASK = 0b111; + + private static final int BIT_CELL_STATE_MASK = 0b111; + private static final int BIT_CELL_STATE_BITS = 3; + private final AppEngInternalInventory inputInventory = new AppEngInternalInventory(this, 1); private final AppEngInternalInventory cellInventory = new AppEngInternalInventory(this, 1); private final IItemHandler internalInventory = new WrapperChainedItemHandler(this.inputInventory, @@ -163,13 +170,13 @@ public class ChestTileEntity extends AENetworkPowerTileEntity final int oldState = this.state; for (int x = 0; x < this.getCellCount(); x++) { - this.state |= (this.getCellStatus(x).ordinal() << (3 * x)); + this.state |= (this.getCellStatus(x).ordinal() << (BIT_CELL_STATE_BITS * x)); } if (this.isPowered()) { - this.state |= 0x40; + this.state |= BIT_POWER_MASK; } else { - this.state &= ~0x40; + this.state &= ~BIT_POWER_MASK; } final boolean currentActive = this.getProxy().isActive(); @@ -245,7 +252,7 @@ public class ChestTileEntity extends AENetworkPowerTileEntity @Override public CellState getCellStatus(final int slot) { if (isRemote()) { - return CellState.values()[(this.state >> (slot * 3)) & 3]; + return CellState.values()[(this.state >> (slot * BIT_CELL_STATE_BITS)) & BIT_CELL_STATE_MASK]; } this.updateHandler(); @@ -273,7 +280,7 @@ public class ChestTileEntity extends AENetworkPowerTileEntity @Override public boolean isPowered() { if (isRemote()) { - return (this.state & 0x40) == 0x40; + return (this.state & BIT_POWER_MASK) == BIT_POWER_MASK; } boolean gridPowered = this.getAECurrentPower() > 64; @@ -290,12 +297,7 @@ public class ChestTileEntity extends AENetworkPowerTileEntity @Override public boolean isCellBlinking(final int slot) { - final long now = this.world.getGameTime(); - if (now - this.lastStateChange > 8) { - return false; - } - - return ((this.state >> (slot * 3 + 2)) & 0x01) == 0x01; + return false; } @Override @@ -327,14 +329,14 @@ public class ChestTileEntity extends AENetworkPowerTileEntity try { if (!this.getProxy().getEnergy().isNetworkPowered()) { final double powerUsed = this.extractAEPower(idleUsage, Actionable.MODULATE, PowerMultiplier.CONFIG); // drain - if (powerUsed + 0.1 >= idleUsage != (this.state & 0x40) > 0) { + if (powerUsed + 0.1 >= idleUsage != (this.state & BIT_POWER_MASK) > 0) { this.recalculateDisplay(); } } } catch (final GridAccessException e) { final double powerUsed = this.extractAEPower(this.getProxy().getIdlePowerUsage(), Actionable.MODULATE, PowerMultiplier.CONFIG); // drain - if (powerUsed + 0.1 >= idleUsage != (this.state & 0x40) > 0) { + if (powerUsed + 0.1 >= idleUsage != (this.state & BIT_POWER_MASK) > 0) { this.recalculateDisplay(); } } @@ -348,20 +350,16 @@ public class ChestTileEntity extends AENetworkPowerTileEntity protected void writeToStream(final PacketBuffer data) throws IOException { super.writeToStream(data); - if (this.world.getGameTime() - this.lastStateChange > 8) { - this.state = 0; - } else { - this.state &= 0x24924924; // just keep the blinks... - } + this.state = 0; for (int x = 0; x < this.getCellCount(); x++) { this.state |= (this.getCellStatus(x).ordinal() << (3 * x)); } if (this.isPowered()) { - this.state |= 0x40; + this.state |= BIT_POWER_MASK; } else { - this.state &= ~0x40; + this.state &= ~BIT_POWER_MASK; } data.writeByte(this.state); @@ -519,7 +517,7 @@ public class ChestTileEntity extends AENetworkPowerTileEntity } this.lastStateChange = now; - this.state |= 1 << (slot * 3 + 2); + this.state |= 1 << (slot * BIT_CELL_STATE_BITS + 2); this.recalculateDisplay(); } diff --git a/src/main/java/appeng/tile/storage/DriveTileEntity.java b/src/main/java/appeng/tile/storage/DriveTileEntity.java index 044e37357..bfb169725 100644 --- a/src/main/java/appeng/tile/storage/DriveTileEntity.java +++ b/src/main/java/appeng/tile/storage/DriveTileEntity.java @@ -77,9 +77,11 @@ import appeng.util.inv.filter.IAEItemFilter; public class DriveTileEntity extends AENetworkInvTileEntity implements IChestOrDrive, IPriorityHost { - private static final int BIT_POWER_MASK = 0x80000000; - private static final int BIT_BLINK_MASK = 0x24924924; - private static final int BIT_STATE_MASK = 0xDB6DB6DB; + private static final int BIT_POWER_MASK = Integer.MIN_VALUE; + private static final int BIT_STATE_MASK = 0b111111111111111111111111111111; + + private static final int BIT_CELL_STATE_MASK = 0b111; + private static final int BIT_CELL_STATE_BITS = 3; private final AppEngCellInventory inv = new AppEngCellInventory(this, 10); private final ICellHandler[] handlersBySlot = new ICellHandler[10]; @@ -95,13 +97,18 @@ public class DriveTileEntity extends AENetworkInvTileEntity implements IChestOrD /** * The state of all cells inside a drive as bitset, using the following format. * - * Bit 31: power state. 0 = off, 1 = on. Bit 30: undefined Bit 29-0: 3 bits as - * state of each cell with the cell in slot 0 located in the 3 least significant - * bits. + * - Bit 31: power state. 0 = off, 1 = on. + * + * - Bit 30: reserved + * + * - Bit 29-0: 3 bits for the state of each cell * - * Cell states: Bit 2: blink. 0 = off, 1 = on. Bit 1-0: cell status + * Cell states: + * + * - Bit 2-0: {@link CellState} ordinal * * + * */ private int state = 0; @@ -128,8 +135,11 @@ public class DriveTileEntity extends AENetworkInvTileEntity implements IChestOrD newState |= BIT_POWER_MASK; } for (int x = 0; x < this.getCellCount(); x++) { - newState |= (this.getCellStatus(x).ordinal() << (3 * x)); + final int o = this.getCellStatus(x).ordinal(); + final int i = (o << (BIT_CELL_STATE_BITS * x)); + newState |= i; } + data.writeInt(newState); writeCellItemIds(data); @@ -224,7 +234,8 @@ public class DriveTileEntity extends AENetworkInvTileEntity implements IChestOrD @Override public CellState getCellStatus(final int slot) { if (Platform.isClient()) { - return CellState.values()[(this.state >> (slot * 3)) & 3]; + final int cellState = ((this.state >> (slot * BIT_CELL_STATE_BITS)) & BIT_CELL_STATE_MASK); + return CellState.values()[cellState]; } final DriveWatcher handler = this.invBySlot[slot]; @@ -246,7 +257,7 @@ public class DriveTileEntity extends AENetworkInvTileEntity implements IChestOrD @Override public boolean isCellBlinking(final int slot) { - return ((this.state >> (slot * 3 + 2)) & 0x01) == 0x01; + return false; } @Override @@ -286,7 +297,7 @@ public class DriveTileEntity extends AENetworkInvTileEntity implements IChestOrD } for (int x = 0; x < this.getCellCount(); x++) { - newState |= (this.getCellStatus(x).ordinal() << (3 * x)); + newState |= (this.getCellStatus(x).ordinal() << (BIT_CELL_STATE_BITS * x)); } if (newState != this.state) { @@ -416,8 +427,6 @@ public class DriveTileEntity extends AENetworkInvTileEntity implements IChestOrD @Override public void blinkCell(final int slot) { - this.state |= 1 << (slot * 3 + 2); - this.recalculateDisplay(); } diff --git a/src/main/resources/assets/appliedenergistics2/blockstates/chest.json b/src/main/resources/assets/appliedenergistics2/blockstates/chest.json index 2a3496fb1..b5a8459ea 100644 --- a/src/main/resources/assets/appliedenergistics2/blockstates/chest.json +++ b/src/main/resources/assets/appliedenergistics2/blockstates/chest.json @@ -15,7 +15,7 @@ }, { "when": { - "slot_state": "online|types_full|full" + "slot_state": "online|not_empty|types_full|full" }, "apply": { "model": "appliedenergistics2:block/chest/lights_on" @@ -45,6 +45,14 @@ "model": "appliedenergistics2:block/chest/cell_state_online" } }, + { + "when": { + "slot_state": "not_empty" + }, + "apply": { + "model": "appliedenergistics2:block/chest/cell_state_not_empty" + } + }, { "when": { "slot_state": "types_full" diff --git a/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_not_empty.json b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_not_empty.json new file mode 100644 index 000000000..cb3dcba8f --- /dev/null +++ b/src/main/resources/assets/appliedenergistics2/models/block/chest/cell_state_not_empty.json @@ -0,0 +1,31 @@ +{ + "loader": "appliedenergistics2:uvlightmap", + "textures": { + "backdrop": "appliedenergistics2:block/chest/cell_state_backdrop", + "state": "appliedenergistics2:block/chest/cell_state_not_empty" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": { + "texture": "#backdrop" + } + } + }, + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": { + "texture": "#state", + "uvlightmap": { + "block": 0.007, + "sky": 0.007 + } + } + } + } + ] +} diff --git a/src/main/resources/assets/appliedenergistics2/textures/block/chest/cell_state_not_empty.png b/src/main/resources/assets/appliedenergistics2/textures/block/chest/cell_state_not_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..79541fdc18801a5ecc75dd18aaf2e49a70d50c2b GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z= Date: Wed, 1 Jul 2020 19:56:39 +0200 Subject: [PATCH 2/6] Refactored CableBus to pass the direction directly. --- .../java/appeng/block/networking/CableBusBlock.java | 5 +++-- src/main/java/appeng/parts/CableBusContainer.java | 11 +++-------- src/main/java/appeng/parts/ICableBusContainer.java | 3 +-- src/main/java/appeng/parts/NullCableBusContainer.java | 3 +-- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/main/java/appeng/block/networking/CableBusBlock.java b/src/main/java/appeng/block/networking/CableBusBlock.java index 9210e8ff8..d4cbd6ff9 100644 --- a/src/main/java/appeng/block/networking/CableBusBlock.java +++ b/src/main/java/appeng/block/networking/CableBusBlock.java @@ -158,11 +158,12 @@ public class CableBusBlock extends AEBaseTileBlock implement @Override public boolean canConnectRedstone(final BlockState state, final IBlockReader w, final BlockPos pos, Direction side) { + // TODO: Verify this. if (side == null) { - side = Direction.UP; + return false; } - return this.cb(w, pos).canConnectRedstone(EnumSet.of(side)); + return this.cb(w, pos).canConnectRedstone(side.getOpposite()); } @Override diff --git a/src/main/java/appeng/parts/CableBusContainer.java b/src/main/java/appeng/parts/CableBusContainer.java index 2f4741ffa..31c231699 100644 --- a/src/main/java/appeng/parts/CableBusContainer.java +++ b/src/main/java/appeng/parts/CableBusContainer.java @@ -623,14 +623,9 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I } @Override - public boolean canConnectRedstone(final EnumSet enumSet) { - for (final Direction dir : enumSet) { - final IPart part = this.getPart(dir); - if (part != null && part.canConnectRedstone()) { - return true; - } - } - return false; + public boolean canConnectRedstone(final Direction opposite) { + final IPart part = this.getPart(opposite); + return part != null && part.canConnectRedstone(); } @Override diff --git a/src/main/java/appeng/parts/ICableBusContainer.java b/src/main/java/appeng/parts/ICableBusContainer.java index 06f7207d6..ebd5d0bca 100644 --- a/src/main/java/appeng/parts/ICableBusContainer.java +++ b/src/main/java/appeng/parts/ICableBusContainer.java @@ -18,7 +18,6 @@ package appeng.parts; -import java.util.EnumSet; import java.util.Random; import net.minecraft.entity.Entity; @@ -43,7 +42,7 @@ public interface ICableBusContainer { int isProvidingWeakPower(Direction opposite); - boolean canConnectRedstone(EnumSet of); + boolean canConnectRedstone(Direction opposite); void onEntityCollision(Entity e); diff --git a/src/main/java/appeng/parts/NullCableBusContainer.java b/src/main/java/appeng/parts/NullCableBusContainer.java index 0b853e001..7ce6a5470 100644 --- a/src/main/java/appeng/parts/NullCableBusContainer.java +++ b/src/main/java/appeng/parts/NullCableBusContainer.java @@ -18,7 +18,6 @@ package appeng.parts; -import java.util.EnumSet; import java.util.Random; import net.minecraft.entity.Entity; @@ -48,7 +47,7 @@ public class NullCableBusContainer implements ICableBusContainer { } @Override - public boolean canConnectRedstone(final EnumSet of) { + public boolean canConnectRedstone(final Direction opposite) { return false; } From 1ce82cc3b9d1dd2e7a0b41b3fbaddb7dac5c072a Mon Sep 17 00:00:00 2001 From: yueh Date: Wed, 1 Jul 2020 20:23:27 +0200 Subject: [PATCH 3/6] Update MCP mappings --- gradle.properties | 2 +- src/main/java/appeng/spatial/StorageChunkGenerator.java | 2 +- .../appeng/worldgen/meteorite/MeteoriteStructureStart.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index aee000602..0edae7d09 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ artifact_basename=appliedenergistics2 ######################################################### minecraft_release=1.15 minecraft_version=1.15.2 -mcp_mappings=20200613-1.15.1 +mcp_mappings=20200701-1.15.1 forge_version=31.2.20 ######################################################### diff --git a/src/main/java/appeng/spatial/StorageChunkGenerator.java b/src/main/java/appeng/spatial/StorageChunkGenerator.java index 045945440..44f324d0b 100644 --- a/src/main/java/appeng/spatial/StorageChunkGenerator.java +++ b/src/main/java/appeng/spatial/StorageChunkGenerator.java @@ -84,7 +84,7 @@ public class StorageChunkGenerator extends ChunkGenerator { } @Override - public int func_222529_a(int p_222529_1_, int p_222529_2_, Heightmap.Type heightmapType) { + public int getHeight(int p_222529_1_, int p_222529_2_, Heightmap.Type heightmapType) { return 0; } diff --git a/src/main/java/appeng/worldgen/meteorite/MeteoriteStructureStart.java b/src/main/java/appeng/worldgen/meteorite/MeteoriteStructureStart.java index df9d8259d..48d5cb0b5 100644 --- a/src/main/java/appeng/worldgen/meteorite/MeteoriteStructureStart.java +++ b/src/main/java/appeng/worldgen/meteorite/MeteoriteStructureStart.java @@ -53,7 +53,7 @@ public class MeteoriteStructureStart extends StructureStart { int scanRadius = (int) Math.max(1, meteoriteRadius * 2); for (int x = -scanRadius; x <= scanRadius; x++) { for (int z = -scanRadius; z <= scanRadius; z++) { - int h = generator.func_222529_a(centerX + x, centerZ + z, heightmapType); + int h = generator.getHeight(centerX + x, centerZ + z, heightmapType); stats.add(h); } } @@ -105,7 +105,7 @@ public class MeteoriteStructureStart extends StructureStart { final double distanceFrom = dx * dx + dz * dz; if (maxY > h + distanceFrom * 0.0175 && maxY < h + distanceFrom * 0.02) { - int heigth = generator.func_222529_a(blockPos.getX(), blockPos.getZ(), Heightmap.Type.OCEAN_FLOOR); + int heigth = generator.getHeight(blockPos.getX(), blockPos.getZ(), Heightmap.Type.OCEAN_FLOOR); if (heigth < seaLevel) { return true; } From 26eeeb4c7582f4daea274986c14b59df76235f4f Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Thu, 2 Jul 2020 09:25:38 +0200 Subject: [PATCH 4/6] Fix player id logging. --- src/main/java/appeng/core/worlddata/PlayerData.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/appeng/core/worlddata/PlayerData.java b/src/main/java/appeng/core/worlddata/PlayerData.java index 9bf181bf4..ab1e8f823 100644 --- a/src/main/java/appeng/core/worlddata/PlayerData.java +++ b/src/main/java/appeng/core/worlddata/PlayerData.java @@ -77,7 +77,7 @@ final class PlayerData extends WorldSavedData implements IWorldPlayerData { this.mapping.put(profile.getId(), playerId); markDirty(); - AELog.info("Assigning ME player id {} to Minecraft profile {} ({})", playerId, profile.getId(), + AELog.info("Assigning ME player id %s to Minecraft profile %s (%s)", playerId, profile.getId(), profile.getName()); } @@ -101,7 +101,7 @@ final class PlayerData extends WorldSavedData implements IWorldPlayerData { UUID profileId = new UUID(profileIds[i * 2], profileIds[i * 2 + 1]); highestPlayerId = Math.max(playerId, highestPlayerId); mapping.put(profileId, playerId); - AELog.debug("AE player ID {} is assigned to profile ID {}", playerId, profileId); + AELog.debug("AE player ID %s is assigned to profile ID %s", playerId, profileId); } this.nextPlayerId = highestPlayerId + 1; } From bafc65d3a867874b251435a637cf6400d342d1e3 Mon Sep 17 00:00:00 2001 From: yueh Date: Wed, 1 Jul 2020 20:38:49 +0200 Subject: [PATCH 5/6] Changed AEGlassMaterial to Materials Preparation in case we need more to support custom non solid, non opaque, or similar blocks. Removed custom fullSize/opaque blocks in favour of Material --- src/main/java/appeng/block/AEBaseBlock.java | 37 +------------------ .../java/appeng/block/misc/ChargerBlock.java | 2 - .../appeng/block/misc/QuartzFixtureBlock.java | 7 +--- .../java/appeng/block/misc/TinyTNTBlock.java | 6 +-- .../block/networking/CableBusBlock.java | 4 +- .../networking/CreativeEnergyCellBlock.java | 4 +- .../block/networking/EnergyCellBlock.java | 4 +- .../block/networking/WirelessBlock.java | 6 +-- .../block/paint/PaintSplotchesBlock.java | 4 +- .../appeng/block/qnb/QuantumBaseBlock.java | 1 - .../block/qnb/QuantumLinkChamberBlock.java | 4 +- .../block/spatial/SpatialPylonBlock.java | 4 +- .../decorative/solid/QuartzGlassBlock.java | 4 +- ...{AEGlassMaterial.java => AEMaterials.java} | 27 ++++++++++++-- 14 files changed, 44 insertions(+), 70 deletions(-) rename src/main/java/appeng/helpers/{AEGlassMaterial.java => AEMaterials.java} (52%) diff --git a/src/main/java/appeng/block/AEBaseBlock.java b/src/main/java/appeng/block/AEBaseBlock.java index 6999bc01c..13c3eb88e 100644 --- a/src/main/java/appeng/block/AEBaseBlock.java +++ b/src/main/java/appeng/block/AEBaseBlock.java @@ -18,22 +18,14 @@ package appeng.block; -import javax.annotation.Nullable; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.material.MaterialColor; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; -import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; import net.minecraft.world.World; @@ -41,13 +33,11 @@ import net.minecraftforge.common.ToolType; import appeng.api.util.IOrientable; import appeng.api.util.IOrientableBlock; -import appeng.helpers.AEGlassMaterial; +import appeng.helpers.AEMaterials; import appeng.util.Platform; public abstract class AEBaseBlock extends Block { - private boolean isOpaque = true; - private boolean isFullSize = true; private boolean isInventory = false; protected AEBaseBlock(final Block.Properties props) { @@ -74,7 +64,7 @@ public abstract class AEBaseBlock extends Block { } private static SoundType getDefaultSoundByMaterial(Material mat) { - if (mat == AEGlassMaterial.INSTANCE || mat == Material.GLASS) { + if (mat == AEMaterials.GLASS || mat == Material.GLASS) { return SoundType.GLASS; } else if (mat == Material.ROCK) { return SoundType.STONE; @@ -85,11 +75,6 @@ public abstract class AEBaseBlock extends Block { } } - @Override - public boolean isNormalCube(BlockState state, IBlockReader worldIn, BlockPos pos) { - return this.isFullSize() && this.isOpaque(); - } - @Override public boolean hasComparatorInputOverride(BlockState state) { return this.isInventory(); @@ -214,24 +199,6 @@ public abstract class AEBaseBlock extends Block { return true; } - protected boolean isOpaque() { - return this.isOpaque; - } - - protected boolean setOpaque(final boolean isOpaque) { - this.isOpaque = isOpaque; - return isOpaque; - } - - protected boolean isFullSize() { - return this.isFullSize; - } - - protected boolean setFullSize(final boolean isFullSize) { - this.isFullSize = isFullSize; - return isFullSize; - } - protected boolean isInventory() { return this.isInventory; } diff --git a/src/main/java/appeng/block/misc/ChargerBlock.java b/src/main/java/appeng/block/misc/ChargerBlock.java index 9e9b388a0..1a1edcccc 100644 --- a/src/main/java/appeng/block/misc/ChargerBlock.java +++ b/src/main/java/appeng/block/misc/ChargerBlock.java @@ -64,8 +64,6 @@ public class ChargerBlock extends AEBaseTileBlock { public ChargerBlock() { super(defaultProps(Material.IRON).notSolid()); - - this.setFullSize(this.setOpaque(false)); } @Override diff --git a/src/main/java/appeng/block/misc/QuartzFixtureBlock.java b/src/main/java/appeng/block/misc/QuartzFixtureBlock.java index 26872af8c..b90e3c86b 100644 --- a/src/main/java/appeng/block/misc/QuartzFixtureBlock.java +++ b/src/main/java/appeng/block/misc/QuartzFixtureBlock.java @@ -81,7 +81,7 @@ public class QuartzFixtureBlock extends AEBaseBlock implements IOrientableBlock public QuartzFixtureBlock() { super(defaultProps(Material.MISCELLANEOUS).doesNotBlockMovement().hardnessAndResistance(0).lightValue(14) - .sound(SoundType.GLASS)); + .sound(SoundType.GLASS).notSolid()); this.setDefaultState(getDefaultState().with(FACING, Direction.UP).with(ODD, false)); } @@ -199,9 +199,4 @@ public class QuartzFixtureBlock extends AEBaseBlock implements IOrientableBlock return new MetaRotation(w, pos, FACING); } - @Override - public boolean isOpaque() { - return false; - } - } diff --git a/src/main/java/appeng/block/misc/TinyTNTBlock.java b/src/main/java/appeng/block/misc/TinyTNTBlock.java index 41eda557d..5f719ea39 100644 --- a/src/main/java/appeng/block/misc/TinyTNTBlock.java +++ b/src/main/java/appeng/block/misc/TinyTNTBlock.java @@ -18,10 +18,9 @@ package appeng.block.misc; -import javax.annotation.Nullable; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; @@ -52,8 +51,7 @@ public class TinyTNTBlock extends AEBaseBlock { .create(new AxisAlignedBB(0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f)); public TinyTNTBlock(Block.Properties props) { - super(props); - setFullSize(setOpaque(false)); + super(defaultProps(Material.TNT).notSolid()); } @Override diff --git a/src/main/java/appeng/block/networking/CableBusBlock.java b/src/main/java/appeng/block/networking/CableBusBlock.java index 9210e8ff8..11f105fdc 100644 --- a/src/main/java/appeng/block/networking/CableBusBlock.java +++ b/src/main/java/appeng/block/networking/CableBusBlock.java @@ -68,7 +68,7 @@ import appeng.client.render.cablebus.CableBusBreakingParticle; import appeng.client.render.cablebus.CableBusRenderState; import appeng.core.sync.network.NetworkHandler; import appeng.core.sync.packets.ClickPacket; -import appeng.helpers.AEGlassMaterial; +import appeng.helpers.AEMaterials; import appeng.integration.abstraction.IAEFacade; import appeng.parts.ICableBusContainer; import appeng.parts.NullCableBusContainer; @@ -81,7 +81,7 @@ public class CableBusBlock extends AEBaseTileBlock implement private static final ICableBusContainer NULL_CABLE_BUS = new NullCableBusContainer(); public CableBusBlock() { - super(defaultProps(AEGlassMaterial.INSTANCE).notSolid().noDrops().variableOpacity()); + super(defaultProps(AEMaterials.GLASS).notSolid().noDrops().variableOpacity()); } @Override diff --git a/src/main/java/appeng/block/networking/CreativeEnergyCellBlock.java b/src/main/java/appeng/block/networking/CreativeEnergyCellBlock.java index 313e4a213..6600dd521 100644 --- a/src/main/java/appeng/block/networking/CreativeEnergyCellBlock.java +++ b/src/main/java/appeng/block/networking/CreativeEnergyCellBlock.java @@ -19,12 +19,12 @@ package appeng.block.networking; import appeng.block.AEBaseTileBlock; -import appeng.helpers.AEGlassMaterial; +import appeng.helpers.AEMaterials; import appeng.tile.networking.CreativeEnergyCellTileEntity; public class CreativeEnergyCellBlock extends AEBaseTileBlock { public CreativeEnergyCellBlock() { - super(defaultProps(AEGlassMaterial.INSTANCE)); + super(defaultProps(AEMaterials.GLASS)); } } diff --git a/src/main/java/appeng/block/networking/EnergyCellBlock.java b/src/main/java/appeng/block/networking/EnergyCellBlock.java index fbe05cdfa..c4d88ff52 100644 --- a/src/main/java/appeng/block/networking/EnergyCellBlock.java +++ b/src/main/java/appeng/block/networking/EnergyCellBlock.java @@ -30,7 +30,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import appeng.block.AEBaseTileBlock; -import appeng.helpers.AEGlassMaterial; +import appeng.helpers.AEMaterials; import appeng.tile.networking.EnergyCellTileEntity; public class EnergyCellBlock extends AEBaseTileBlock { @@ -38,7 +38,7 @@ public class EnergyCellBlock extends AEBaseTileBlock { public static final IntegerProperty ENERGY_STORAGE = IntegerProperty.create("fullness", 0, 7); public EnergyCellBlock() { - super(defaultProps(AEGlassMaterial.INSTANCE)); + super(defaultProps(AEMaterials.GLASS)); } @Override diff --git a/src/main/java/appeng/block/networking/WirelessBlock.java b/src/main/java/appeng/block/networking/WirelessBlock.java index c24c49191..f1bdbc8fe 100644 --- a/src/main/java/appeng/block/networking/WirelessBlock.java +++ b/src/main/java/appeng/block/networking/WirelessBlock.java @@ -40,7 +40,7 @@ import appeng.block.AEBaseTileBlock; import appeng.container.ContainerLocator; import appeng.container.ContainerOpener; import appeng.container.implementations.WirelessContainer; -import appeng.helpers.AEGlassMaterial; +import appeng.helpers.AEMaterials; import appeng.tile.networking.WirelessTileEntity; import appeng.util.Platform; @@ -58,9 +58,7 @@ public class WirelessBlock extends AEBaseTileBlock { public static final EnumProperty STATE = EnumProperty.create("state", State.class); public WirelessBlock() { - super(defaultProps(AEGlassMaterial.INSTANCE).notSolid()); - this.setFullSize(false); - this.setOpaque(false); + super(defaultProps(AEMaterials.GLASS).notSolid()); this.setDefaultState(this.getDefaultState().with(STATE, State.OFF)); } diff --git a/src/main/java/appeng/block/paint/PaintSplotchesBlock.java b/src/main/java/appeng/block/paint/PaintSplotchesBlock.java index 52353d59c..722fb1ea6 100644 --- a/src/main/java/appeng/block/paint/PaintSplotchesBlock.java +++ b/src/main/java/appeng/block/paint/PaintSplotchesBlock.java @@ -42,9 +42,7 @@ import appeng.util.Platform; public class PaintSplotchesBlock extends AEBaseTileBlock { public PaintSplotchesBlock() { - super(defaultProps(Material.WATER, MaterialColor.AIR)); - this.setFullSize(false); - this.setOpaque(false); + super(defaultProps(Material.WATER, MaterialColor.AIR).notSolid()); } @Override diff --git a/src/main/java/appeng/block/qnb/QuantumBaseBlock.java b/src/main/java/appeng/block/qnb/QuantumBaseBlock.java index daf7f2eb5..204aa8e6b 100644 --- a/src/main/java/appeng/block/qnb/QuantumBaseBlock.java +++ b/src/main/java/appeng/block/qnb/QuantumBaseBlock.java @@ -46,7 +46,6 @@ public abstract class QuantumBaseBlock extends AEBaseTileBlock { public SpatialPylonBlock() { - super(defaultProps(AEGlassMaterial.INSTANCE)); + super(defaultProps(AEMaterials.GLASS)); } @Override diff --git a/src/main/java/appeng/decorative/solid/QuartzGlassBlock.java b/src/main/java/appeng/decorative/solid/QuartzGlassBlock.java index f8d063852..559d2dd21 100644 --- a/src/main/java/appeng/decorative/solid/QuartzGlassBlock.java +++ b/src/main/java/appeng/decorative/solid/QuartzGlassBlock.java @@ -23,7 +23,7 @@ import net.minecraft.block.BlockState; import net.minecraft.block.material.Material; import net.minecraft.util.Direction; -import appeng.helpers.AEGlassMaterial; +import appeng.helpers.AEMaterials; public class QuartzGlassBlock extends AbstractGlassBlock { @@ -34,7 +34,7 @@ public class QuartzGlassBlock extends AbstractGlassBlock { @Override public boolean isSideInvisible(BlockState state, BlockState adjacentBlockState, Direction side) { final Material mat = adjacentBlockState.getMaterial(); - if (mat == Material.GLASS || mat == AEGlassMaterial.INSTANCE) { + if (mat == Material.GLASS || mat == AEMaterials.GLASS) { if (adjacentBlockState.getRenderType() == state.getRenderType()) { return true; } diff --git a/src/main/java/appeng/helpers/AEGlassMaterial.java b/src/main/java/appeng/helpers/AEMaterials.java similarity index 52% rename from src/main/java/appeng/helpers/AEGlassMaterial.java rename to src/main/java/appeng/helpers/AEMaterials.java index f5b5b91d1..1de85e7ff 100644 --- a/src/main/java/appeng/helpers/AEGlassMaterial.java +++ b/src/main/java/appeng/helpers/AEMaterials.java @@ -22,9 +22,30 @@ import net.minecraft.block.material.Material; import net.minecraft.block.material.MaterialColor; import net.minecraft.block.material.PushReaction; -public class AEGlassMaterial { +public class AEMaterials { - public static final Material INSTANCE = new Material(MaterialColor.AIR, false, false, true, false, true, false, - false, PushReaction.NORMAL); + public static final Material GLASS = make(MaterialColor.AIR, false, false, true, false, true, false, false, + PushReaction.NORMAL); + + /** + * Small factory helper with named parameters. + * + * @param color + * @param isLiquid + * @param isSolid + * @param blocksMovement + * @param isOpaque + * @param requiresNoTool + * @param flammable + * @param replaceable + * @param pushReaction + * @return + */ + private static Material make(MaterialColor color, boolean isLiquid, boolean isSolid, boolean blocksMovement, + boolean isOpaque, boolean requiresNoTool, boolean flammable, boolean replaceable, + PushReaction pushReaction) { + return new Material(color, isLiquid, isSolid, blocksMovement, isOpaque, requiresNoTool, flammable, replaceable, + pushReaction); + } } From 25da0b7357d8c5dd80a79ee03cce0f67a68740b3 Mon Sep 17 00:00:00 2001 From: yueh Date: Thu, 2 Jul 2020 11:37:24 +0200 Subject: [PATCH 6/6] Removed unused code from DriveLedTER --- .../render/tesr/DriveLedTileEntityRenderer.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java b/src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java index 8969a7b51..add6723ac 100644 --- a/src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java +++ b/src/main/java/appeng/client/render/tesr/DriveLedTileEntityRenderer.java @@ -3,11 +3,9 @@ package appeng.client.render.tesr; import java.util.EnumMap; import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.IVertexBuilder; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderState; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Vector3f; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; @@ -26,14 +24,6 @@ import appeng.tile.storage.DriveTileEntity; @OnlyIn(Dist.CLIENT) public class DriveLedTileEntityRenderer extends TileEntityRenderer { - private static final RenderState.TransparencyState TRANSLUCENT_TRANSPARENCY = new RenderState.TransparencyState( - "translucent_transparency", () -> { - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - }, () -> { - RenderSystem.disableBlend(); - }); - private static final EnumMap STATE_COLORS; // Color used for the cell indicator for blinking during recent activity @@ -88,8 +78,6 @@ public class DriveLedTileEntityRenderer extends TileEntityRenderer