This commit is contained in:
Sen 2025-07-16 16:01:56 +02:00
parent 5a69c0545b
commit cf37d48292
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
122 changed files with 633 additions and 2384 deletions

View file

@ -53,6 +53,7 @@ public abstract class ReorderRegistry {
PLACE_LAST.add(Blocks.tallgrass);
PLACE_LAST.add(Blocks.deadbush);
PLACE_LAST.add(Blocks.piston_head);
PLACE_LAST.add(Blocks.sticky_piston_head);
for(BlockFlower block : BlockFlower.FLOWERS) {
PLACE_LAST.add(block);
}
@ -80,8 +81,6 @@ public abstract class ReorderRegistry {
PLACE_LAST.add(Blocks.soul_wart);
PLACE_LAST.add(Blocks.piston);
PLACE_LAST.add(Blocks.sticky_piston);
PLACE_LAST.add(Blocks.piston_head);
PLACE_LAST.add(Blocks.piston_extension);
PLACE_LAST.add(Blocks.cocoa);
PLACE_LAST.add(Blocks.tripwire_hook);
PLACE_LAST.add(Blocks.string);
@ -116,7 +115,7 @@ public abstract class ReorderRegistry {
PLACE_FINAL.add(Blocks.reeds);
PLACE_FINAL.add(Blocks.cake);
PLACE_FINAL.add(Blocks.piston_head);
PLACE_FINAL.add(Blocks.piston_extension);
PLACE_FINAL.add(Blocks.sticky_piston_head);
}
/*

View file

@ -71,7 +71,6 @@ import common.block.tech.BlockLever;
import common.block.tech.BlockLever.EnumOrientation;
import common.block.tech.BlockPistonBase;
import common.block.tech.BlockPistonHead;
import common.block.tech.BlockPistonHead.EnumPistonType;
import common.block.tech.BlockPressurePlate;
import common.block.tech.BlockPressurePlateWeighted;
import common.block.tech.BlockRail;
@ -365,7 +364,6 @@ public abstract class Converter {
mapTile(TileEntityDispenser.class, "Trap", "dispenser");
mapTile(TileEntityDropper.class, "Dropper", "dropper");
mapTile(TileEntitySign.class, "Sign", "sign");
// mapTile(TileEntityPiston.class, "Piston", "piston");
mapTile(DeviceEffectGenerator.class, "Beacon", "beacon");
mapTile(TileEntityDaylightDetector.class, "DLDetector", "daylight_detector");
mapTile(TileEntityHopper.class, "Hopper", "hopper");
@ -549,18 +547,18 @@ public abstract class Converter {
mapBlock(Blocks.piston.getState().withProperty(BlockPistonBase.EXTENDED, true).withProperty(BlockPistonBase.FACING, Facing.SOUTH), 33, 11);
mapBlock(Blocks.piston.getState().withProperty(BlockPistonBase.EXTENDED, true).withProperty(BlockPistonBase.FACING, Facing.WEST), 33, 12);
mapBlock(Blocks.piston.getState().withProperty(BlockPistonBase.EXTENDED, true).withProperty(BlockPistonBase.FACING, Facing.EAST), 33, 13);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.DOWN).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 0, 7);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.UP).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 1, 6);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.NORTH).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 2);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.SOUTH).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 3);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.WEST).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 4);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.EAST).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 5);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.DOWN).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 8, 15);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.UP).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 9, 14);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.NORTH).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 10);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.SOUTH).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 11);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.WEST).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 12);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.EAST).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 13);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.DOWN), 34, 0, 7);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.UP), 34, 1, 6);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.NORTH), 34, 2);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.SOUTH), 34, 3);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.WEST), 34, 4);
mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.EAST), 34, 5);
mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.DOWN), 34, 8, 15);
mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.UP), 34, 9, 14);
mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.NORTH), 34, 10);
mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.SOUTH), 34, 11);
mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.WEST), 34, 12);
mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.EAST), 34, 13);
mapBlock(new BlockFunction() {
public State getState(int id, int data) {
return BlockWool.getByColor(COLOR_LOOKUP[data]).getState();

View file

@ -1,13 +0,0 @@
package server.world;
import common.block.Block;
import common.util.BlockPos;
public record TickEvent(BlockPos position, Block block, int id, int parameter) {
public boolean equals(Object other) {
if(!(other instanceof TickEvent))
return false;
TickEvent event = (TickEvent)other;
return this.position.equals(event.position) && this.id == event.id && this.parameter == event.parameter && this.block == event.block;
}
}

View file

@ -2,7 +2,6 @@ package server.world;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@ -16,6 +15,7 @@ import java.util.function.Predicate;
import common.biome.Biome;
import common.block.Block;
import common.block.BlockFalling;
import common.block.ITileEntityProvider;
import common.block.Material;
import common.block.artificial.BlockDoor;
import common.block.liquid.BlockLiquid;
@ -49,7 +49,6 @@ import common.packet.SPacketParticles;
import common.packet.SPacketChangeGameState;
import common.packet.SPacketSpawnGlobalEntity;
import common.packet.SPacketBiome;
import common.packet.SPacketBlockAction;
import common.packet.SPacketBlockBreakAnim;
import common.packet.SPacketBlockChange;
import common.packet.SPacketCelestials;
@ -124,7 +123,6 @@ public final class WorldServer extends AWorldServer {
private final Random grng;
private final Set<NextTickListEntry> ticks = Sets.<NextTickListEntry>newHashSet();
private final TreeSet<NextTickListEntry> ticksNext = new TreeSet();
private final EventList[] queue = new EventList[] {new EventList(), new EventList()};
private final List<NextTickListEntry> ticksNow = Lists.<NextTickListEntry>newArrayList();
private final Set<Long> dropped = Collections.<Long>newSetFromMap(new ConcurrentHashMap());
private final LongHashMap<ChunkServer> chunks = new LongHashMap();
@ -174,7 +172,6 @@ public final class WorldServer extends AWorldServer {
private int updatesForced;
private boolean loadersModified;
private int emptyTicks;
private int blockEvtIdx;
private int trackDistance;
private int viewRadius;
private int updateLCG = this.rand.intv();
@ -394,7 +391,6 @@ public final class WorldServer extends AWorldServer {
// this.profiler.next("portalForcer");
// this.teleporter.removeStalePortalLocations(this.time);
// this.profiler.end();
this.sendQueuedBlockEvents();
}
// public int getNextMapId() {
@ -983,43 +979,6 @@ public final class WorldServer extends AWorldServer {
return explosion;
}
public void addBlockEvent(BlockPos pos, Block blockIn, int eventID, int eventParam) {
TickEvent blockeventdata = new TickEvent(pos, blockIn, eventID, eventParam);
for(TickEvent blockeventdata1 : this.queue[this.blockEvtIdx]) {
if(blockeventdata1.equals(blockeventdata)) {
return;
}
}
this.queue[this.blockEvtIdx].add(blockeventdata);
}
private void sendQueuedBlockEvents() {
while(!this.queue[this.blockEvtIdx].isEmpty()) {
int i = this.blockEvtIdx;
this.blockEvtIdx ^= 1;
for(TickEvent blockeventdata : this.queue[i]) {
if(this.fireBlockEvent(blockeventdata)) {
this.sendNear((double)blockeventdata.position().getX(), (double)blockeventdata.position().getY(),
(double)blockeventdata.position().getZ(), 64.0D,
new SPacketBlockAction(blockeventdata.position(), blockeventdata.block(), blockeventdata.id(),
blockeventdata.parameter()));
}
}
this.queue[i].clear();
}
}
private boolean fireBlockEvent(TickEvent event) {
State iblockstate = this.getState(event.position());
return iblockstate.getBlock() == event.block()
? iblockstate.getBlock().onBlockEventReceived(this, event.position(), iblockstate, event.id(), event.parameter())
: false;
}
public void resetWeather() {
this.calculateInitialWeather();
this.updateWeather(true);
@ -2617,11 +2576,6 @@ public final class WorldServer extends AWorldServer {
if(this.isBlockLoaded(pos))
this.getChunk(pos).setModified(true);
}
private static class EventList extends ArrayList<TickEvent> {
private EventList() {
}
}
public static class WorldSavedData {
public final String id;
@ -2755,7 +2709,7 @@ public final class WorldServer extends AWorldServer {
BlockPos pos = new BlockPos(x, y, z);
this.sendToAllPlayersWatchingChunk(new SPacketBlockChange(WorldServer.this, pos));
if(WorldServer.this.getState(pos).getBlock().hasTileEntity()) {
if(WorldServer.this.getState(pos).getBlock() instanceof ITileEntityProvider) {
this.sendTileToAllPlayersWatchingChunk(WorldServer.this.getTileEntity(pos));
}
}
@ -2801,7 +2755,7 @@ public final class WorldServer extends AWorldServer {
int z = (int)(this.changes[n] >> 32 & 15L) + this.position.z * 16;
BlockPos pos = new BlockPos(x, y, z);
if(WorldServer.this.getState(pos).getBlock().hasTileEntity()) {
if(WorldServer.this.getState(pos).getBlock() instanceof ITileEntityProvider) {
this.sendTileToAllPlayersWatchingChunk(WorldServer.this.getTileEntity(pos));
}
}