Fix ChunkEvent Y->Z and add POPULATE Type
This commit is contained in:
parent
35a60d5ed7
commit
b8817f2929
@ -35,7 +35,7 @@ public interface IGameEventListener {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs before and after whenever a chunk is either loaded or unloaded.
|
* Runs before and after whenever a chunk is either loaded, unloaded, or populated.
|
||||||
*
|
*
|
||||||
* @see WorldClient#doPreChunk(int, int, boolean)
|
* @see WorldClient#doPreChunk(int, int, boolean)
|
||||||
*/
|
*/
|
||||||
|
@ -24,15 +24,15 @@ public final class ChunkEvent {
|
|||||||
private final int x;
|
private final int x;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Chunk Y position.
|
* The Chunk Z position.
|
||||||
*/
|
*/
|
||||||
private final int y;
|
private final int z;
|
||||||
|
|
||||||
public ChunkEvent(EventState state, Type type, int x, int y) {
|
public ChunkEvent(EventState state, Type type, int x, int z) {
|
||||||
this.state = state;
|
this.state = state;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -57,14 +57,27 @@ public final class ChunkEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The Chunk Y position.
|
* @return The Chunk Z position.
|
||||||
*/
|
*/
|
||||||
public final int getY() {
|
public final int getZ() {
|
||||||
return this.y;
|
return this.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Type {
|
public enum Type {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When the chunk is constructed.
|
||||||
|
*/
|
||||||
LOAD,
|
LOAD,
|
||||||
UNLOAD
|
|
||||||
|
/**
|
||||||
|
* When the chunk is deconstructed.
|
||||||
|
*/
|
||||||
|
UNLOAD,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When the chunk is being populated with blocks, tile entities, etc.
|
||||||
|
*/
|
||||||
|
POPULATE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
package baritone.launch.mixins;
|
||||||
|
|
||||||
|
import baritone.bot.Baritone;
|
||||||
|
import baritone.bot.event.events.ChunkEvent;
|
||||||
|
import baritone.bot.event.events.type.EventState;
|
||||||
|
import net.minecraft.client.network.NetHandlerPlayClient;
|
||||||
|
import net.minecraft.network.play.server.SPacketChunkData;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Brady
|
||||||
|
* @since 8/3/2018 12:54 AM
|
||||||
|
*/
|
||||||
|
@Mixin(NetHandlerPlayClient.class)
|
||||||
|
public class MixinNetHandlerPlayClient {
|
||||||
|
|
||||||
|
@Inject(
|
||||||
|
method = "handleChunkData",
|
||||||
|
at = @At(
|
||||||
|
value = "INVOKE",
|
||||||
|
target = "net/minecraft/world/chunk/Chunk.read(Lnet/minecraft/network/PacketBuffer;IZ)V"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
private void preRead(SPacketChunkData packetIn, CallbackInfo ci) {
|
||||||
|
Baritone.INSTANCE.getGameEventHandler().onChunkEvent(
|
||||||
|
new ChunkEvent(
|
||||||
|
EventState.PRE,
|
||||||
|
ChunkEvent.Type.POPULATE,
|
||||||
|
packetIn.getChunkX(),
|
||||||
|
packetIn.getChunkZ()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(
|
||||||
|
method = "handleChunkData",
|
||||||
|
at = @At("RETURN")
|
||||||
|
)
|
||||||
|
private void postHandleChunkData(SPacketChunkData packetIn, CallbackInfo ci) {
|
||||||
|
Baritone.INSTANCE.getGameEventHandler().onChunkEvent(
|
||||||
|
new ChunkEvent(
|
||||||
|
EventState.POST,
|
||||||
|
ChunkEvent.Type.POPULATE,
|
||||||
|
packetIn.getChunkX(),
|
||||||
|
packetIn.getChunkZ()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -20,13 +20,13 @@ public class MixinWorldClient {
|
|||||||
method = "doPreChunk",
|
method = "doPreChunk",
|
||||||
at = @At("HEAD")
|
at = @At("HEAD")
|
||||||
)
|
)
|
||||||
private void preDoPreChunk(int chunkX, int chunkY, boolean loadChunk, CallbackInfo ci) {
|
private void preDoPreChunk(int chunkX, int chunkZ, boolean loadChunk, CallbackInfo ci) {
|
||||||
Baritone.INSTANCE.getGameEventHandler().onChunkEvent(
|
Baritone.INSTANCE.getGameEventHandler().onChunkEvent(
|
||||||
new ChunkEvent(
|
new ChunkEvent(
|
||||||
EventState.PRE,
|
EventState.PRE,
|
||||||
loadChunk ? ChunkEvent.Type.LOAD : ChunkEvent.Type.UNLOAD,
|
loadChunk ? ChunkEvent.Type.LOAD : ChunkEvent.Type.UNLOAD,
|
||||||
chunkX,
|
chunkX,
|
||||||
chunkY
|
chunkZ
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -35,13 +35,13 @@ public class MixinWorldClient {
|
|||||||
method = "doPreChunk",
|
method = "doPreChunk",
|
||||||
at = @At("RETURN")
|
at = @At("RETURN")
|
||||||
)
|
)
|
||||||
private void postDoPreChunk(int chunkX, int chunkY, boolean loadChunk, CallbackInfo ci) {
|
private void postDoPreChunk(int chunkX, int chunkZ, boolean loadChunk, CallbackInfo ci) {
|
||||||
Baritone.INSTANCE.getGameEventHandler().onChunkEvent(
|
Baritone.INSTANCE.getGameEventHandler().onChunkEvent(
|
||||||
new ChunkEvent(
|
new ChunkEvent(
|
||||||
EventState.POST,
|
EventState.POST,
|
||||||
loadChunk ? ChunkEvent.Type.LOAD : ChunkEvent.Type.UNLOAD,
|
loadChunk ? ChunkEvent.Type.LOAD : ChunkEvent.Type.UNLOAD,
|
||||||
chunkX,
|
chunkX,
|
||||||
chunkY
|
chunkZ
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user