mirror of
https://github.com/GeyserMC/Geyser.git
synced 2024-08-14 23:57:35 +00:00
Block-related updates
- Fix block breaking animation - Fix block breaking particles - Don't initialize Geyser's chunk cache if using Spigot
This commit is contained in:
parent
24f9651cc6
commit
f68632f433
3 changed files with 9 additions and 6 deletions
|
@ -29,6 +29,7 @@ import com.github.steveice10.mc.protocol.data.game.chunk.Chunk;
|
||||||
import com.github.steveice10.mc.protocol.data.game.chunk.Column;
|
import com.github.steveice10.mc.protocol.data.game.chunk.Column;
|
||||||
import com.github.steveice10.mc.protocol.data.game.entity.metadata.Position;
|
import com.github.steveice10.mc.protocol.data.game.entity.metadata.Position;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import org.geysermc.connector.bootstrap.GeyserBootstrap;
|
||||||
import org.geysermc.connector.network.session.GeyserSession;
|
import org.geysermc.connector.network.session.GeyserSession;
|
||||||
import org.geysermc.connector.network.translators.world.block.BlockTranslator;
|
import org.geysermc.connector.network.translators.world.block.BlockTranslator;
|
||||||
import org.geysermc.connector.network.translators.world.chunk.ChunkPosition;
|
import org.geysermc.connector.network.translators.world.chunk.ChunkPosition;
|
||||||
|
@ -38,15 +39,17 @@ import java.util.Map;
|
||||||
|
|
||||||
public class ChunkCache {
|
public class ChunkCache {
|
||||||
|
|
||||||
private boolean cache;
|
private final boolean cache;
|
||||||
private final GeyserSession session;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Map<ChunkPosition, Column> chunks = new HashMap<>();
|
private Map<ChunkPosition, Column> chunks = new HashMap<>();
|
||||||
|
|
||||||
public ChunkCache(GeyserSession session) {
|
public ChunkCache(GeyserSession session) {
|
||||||
this.session = session;
|
if (session.getConnector().getWorldManager().getClass() == GeyserBootstrap.DEFAULT_CHUNK_MANAGER.getClass()) {
|
||||||
this.cache = session.getConnector().getConfig().isCacheChunks();
|
this.cache = session.getConnector().getConfig().isCacheChunks();
|
||||||
|
} else {
|
||||||
|
this.cache = false; // To prevent Spigot from initializing
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addToCache(Column chunk) {
|
public void addToCache(Column chunk) {
|
||||||
|
|
|
@ -112,7 +112,7 @@ public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket
|
||||||
break;
|
break;
|
||||||
case CONTINUE_BREAK:
|
case CONTINUE_BREAK:
|
||||||
LevelEventPacket continueBreakPacket = new LevelEventPacket();
|
LevelEventPacket continueBreakPacket = new LevelEventPacket();
|
||||||
continueBreakPacket.setType(LevelEventType.BLOCK_UPDATE_BREAK); //TODO: There are now level event types for all breaks. Important?
|
continueBreakPacket.setType(LevelEventType.PARTICLE_CRACK_BLOCK);
|
||||||
continueBreakPacket.setData(BlockTranslator.getBedrockBlockId(session.getBreakingBlock()));
|
continueBreakPacket.setData(BlockTranslator.getBedrockBlockId(session.getBreakingBlock()));
|
||||||
continueBreakPacket.setPosition(packet.getBlockPosition().toFloat());
|
continueBreakPacket.setPosition(packet.getBlockPosition().toFloat());
|
||||||
session.sendUpstreamPacket(continueBreakPacket);
|
session.sendUpstreamPacket(continueBreakPacket);
|
||||||
|
|
|
@ -152,7 +152,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
|
||||||
session.setLastBlockPlacePosition(null);
|
session.setLastBlockPlacePosition(null);
|
||||||
|
|
||||||
LevelEventPacket blockBreakPacket = new LevelEventPacket();
|
LevelEventPacket blockBreakPacket = new LevelEventPacket();
|
||||||
blockBreakPacket.setType(LevelEventType.BLOCK_STOP_BREAK); //TODO: Make sure this is the right new enum
|
blockBreakPacket.setType(LevelEventType.PARTICLE_DESTROY_BLOCK);
|
||||||
blockBreakPacket.setPosition(packet.getBlockPosition().toFloat());
|
blockBreakPacket.setPosition(packet.getBlockPosition().toFloat());
|
||||||
blockBreakPacket.setData(BlockTranslator.getBedrockBlockId(blockState));
|
blockBreakPacket.setData(BlockTranslator.getBedrockBlockId(blockState));
|
||||||
session.sendUpstreamPacket(blockBreakPacket);
|
session.sendUpstreamPacket(blockBreakPacket);
|
||||||
|
|
Loading…
Reference in a new issue