]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/commitdiff
Move Mob Spawner processing to client side
authorIrtimaled <irtimaled@gmail.com>
Thu, 2 Apr 2020 07:36:00 +0000 (00:36 -0700)
committerIrtimaled <irtimaled@gmail.com>
Mon, 18 May 2020 00:28:01 +0000 (17:28 -0700)
src/main/java/com/irtimaled/bbor/client/ClientRenderer.java
src/main/java/com/irtimaled/bbor/client/providers/MobSpawnerProvider.java [new file with mode: 0644]
src/main/java/com/irtimaled/bbor/common/ChunkProcessor.java
src/main/java/com/irtimaled/bbor/common/CommonProxy.java
src/main/java/com/irtimaled/bbor/common/events/MobSpawnerBroken.java [deleted file]
src/main/java/com/irtimaled/bbor/common/interop/CommonInterop.java
src/main/java/com/irtimaled/bbor/common/messages/BoundingBoxDeserializer.java
src/main/java/com/irtimaled/bbor/common/messages/BoundingBoxSerializer.java
src/main/java/com/irtimaled/bbor/mixin/server/management/MixinPlayerInteractionManager.java [deleted file]
src/main/resources/mixins.bbor.json

index 769dbcd5e679dd595307475089f1509017b87d44..8618a9e6254d20ad5b180adc0c7bc6949fdcf2bd 100644 (file)
@@ -51,6 +51,7 @@ public class ClientRenderer {
         registerProvider(new BeaconProvider());
         registerProvider(new CustomBoxProvider());
         registerProvider(new BiomeBorderProvider());
+        registerProvider(new MobSpawnerProvider());
     }
 
     public static <T extends AbstractBoundingBox> void registerProvider(IBoundingBoxProvider<T> provider) {
diff --git a/src/main/java/com/irtimaled/bbor/client/providers/MobSpawnerProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/MobSpawnerProvider.java
new file mode 100644 (file)
index 0000000..4fd787a
--- /dev/null
@@ -0,0 +1,15 @@
+package com.irtimaled.bbor.client.providers;
+
+import com.irtimaled.bbor.client.interop.TileEntitiesHelper;
+import com.irtimaled.bbor.common.models.BoundingBoxMobSpawner;
+import com.irtimaled.bbor.common.models.Coords;
+import net.minecraft.tileentity.TileEntityMobSpawner;
+
+public class MobSpawnerProvider implements IBoundingBoxProvider<BoundingBoxMobSpawner> {
+    public Iterable<BoundingBoxMobSpawner> get(int dimensionId) {
+        return TileEntitiesHelper.map(TileEntityMobSpawner.class, spawner -> {
+            Coords coords = new Coords(spawner.getPos());
+            return BoundingBoxMobSpawner.from(coords);
+        });
+    }
+}
index 7eb3403f3fc5e54a611abd4768a5bba73dfdd652..f1fb07f01d87dfa2656a37ab7cff87e7af513caa 100644 (file)
@@ -2,16 +2,12 @@ package com.irtimaled.bbor.common;
 
 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
 import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
-import com.irtimaled.bbor.common.models.BoundingBoxMobSpawner;
 import com.irtimaled.bbor.common.models.Coords;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.TileEntityMobSpawner;
 import net.minecraft.util.math.MutableBoundingBox;
 import net.minecraft.world.chunk.Chunk;
 import net.minecraft.world.gen.feature.structure.StructurePiece;
 import net.minecraft.world.gen.feature.structure.StructureStart;
 
-import java.util.Collection;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -52,22 +48,10 @@ class ChunkProcessor {
         return BoundingBoxCuboid.from(min, max, type);
     }
 
-    private void addMobSpawners(Chunk chunk) {
-        Collection<TileEntity> tileEntities = chunk.getTileEntityMap().values();
-        for (TileEntity tileEntity : tileEntities) {
-            TileEntityMobSpawner spawner = TypeHelper.as(tileEntity, TileEntityMobSpawner.class);
-            if (spawner != null) {
-                Coords coords = new Coords(spawner.getPos());
-                boundingBoxCache.addBoundingBox(BoundingBoxMobSpawner.from(coords));
-            }
-        }
-    }
-
     void process(Chunk chunk) {
         Map<String, StructureStart> structureMap = chunk.getStructureStarts();
         if (structureMap.size() > 0) {
             supportedStructures.forEach(type -> addStructures(type, structureMap));
         }
-        addMobSpawners(chunk);
     }
 }
index 5d612f89322ebadfefc98db484c9c06036e9d682..9606d02f0efc6017cea3fd3c132d2f7fc5b99fdf 100644 (file)
@@ -7,7 +7,6 @@ import com.irtimaled.bbor.common.messages.InitializeClient;
 import com.irtimaled.bbor.common.messages.PayloadBuilder;
 import com.irtimaled.bbor.common.messages.RemoveBoundingBox;
 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
-import com.irtimaled.bbor.common.models.BoundingBoxMobSpawner;
 import com.irtimaled.bbor.common.models.ServerPlayer;
 
 import java.util.HashMap;
@@ -29,7 +28,6 @@ public class CommonProxy {
     public void init() {
         EventBus.subscribe(WorldLoaded.class, this::worldLoaded);
         EventBus.subscribe(ChunkLoaded.class, this::chunkLoaded);
-        EventBus.subscribe(MobSpawnerBroken.class, this::mobSpawnerBroken);
         EventBus.subscribe(PlayerLoggedIn.class, this::playerLoggedIn);
         EventBus.subscribe(PlayerLoggedOut.class, this::playerLoggedOut);
         EventBus.subscribe(PlayerSubscribed.class, this::onPlayerSubscribed);
@@ -140,13 +138,6 @@ public class CommonProxy {
         cache.removeBoundingBox(key);
     }
 
-    private void mobSpawnerBroken(MobSpawnerBroken event) {
-        int dimensionId = event.getDimensionId();
-        AbstractBoundingBox boundingBox = BoundingBoxMobSpawner.from(event.getPos());
-        removeBoundingBox(dimensionId, boundingBox);
-        sendRemoveBoundingBox(dimensionId, boundingBox);
-    }
-
     private void serverTick() {
         for (Map.Entry<Integer, ServerPlayer> playerEntry : players.entrySet()) {
             int playerId = playerEntry.getKey();
diff --git a/src/main/java/com/irtimaled/bbor/common/events/MobSpawnerBroken.java b/src/main/java/com/irtimaled/bbor/common/events/MobSpawnerBroken.java
deleted file mode 100644 (file)
index 0b29fd5..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.irtimaled.bbor.common.events;
-
-import com.irtimaled.bbor.common.models.Coords;
-
-public class MobSpawnerBroken {
-    private final int dimensionId;
-    private final Coords pos;
-
-    public MobSpawnerBroken(int dimensionId, Coords pos) {
-        this.dimensionId = dimensionId;
-        this.pos = pos;
-    }
-
-    public int getDimensionId() {
-        return dimensionId;
-    }
-
-    public Coords getPos() {
-        return pos;
-    }
-}
index f0a82190bb6692d103112c5c5cf6fde7eca6e439..f1b2a6c9256afc04833a431190d428347fdd1975 100644 (file)
@@ -2,16 +2,11 @@ package com.irtimaled.bbor.common.interop;
 
 import com.irtimaled.bbor.common.EventBus;
 import com.irtimaled.bbor.common.events.*;
-import com.irtimaled.bbor.common.models.Coords;
 import com.irtimaled.bbor.common.models.ServerPlayer;
 import com.irtimaled.bbor.config.ConfigManager;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockMobSpawner;
 import net.minecraft.entity.player.EntityPlayerMP;
 import net.minecraft.network.NetHandlerPlayServer;
 import net.minecraft.network.NetworkManager;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
 import net.minecraft.world.WorldServer;
 import net.minecraft.world.chunk.Chunk;
 
@@ -62,10 +57,4 @@ public class CommonInterop {
     public static void playerSubscribed(EntityPlayerMP player) {
         EventBus.publish(new PlayerSubscribed(player.getEntityId(), new ServerPlayer(player)));
     }
-
-    public static void tryHarvestBlock(Block block, BlockPos pos, World world) {
-        if (block instanceof BlockMobSpawner) {
-            EventBus.publish(new MobSpawnerBroken(world.dimension.getType().getId(), new Coords(pos)));
-        }
-    }
 }
index d858730361e71a9ce87896bf447646e17f82ea28..c25a9b95a365abd8117f7ba6174dad38125a397e 100644 (file)
@@ -1,7 +1,10 @@
 package com.irtimaled.bbor.common.messages;
 
 import com.irtimaled.bbor.common.BoundingBoxType;
-import com.irtimaled.bbor.common.models.*;
+import com.irtimaled.bbor.common.models.AbstractBoundingBox;
+import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
+import com.irtimaled.bbor.common.models.BoundingBoxVillage;
+import com.irtimaled.bbor.common.models.Coords;
 
 import java.awt.*;
 import java.util.HashSet;
@@ -17,8 +20,6 @@ class BoundingBoxDeserializer {
                 return deserializeVillage(reader);
             case 'S':
                 return deserializeStructure(reader);
-            case 'M':
-                return deserializeMobSpawner(reader);
         }
         return null;
     }
@@ -42,8 +43,4 @@ class BoundingBoxDeserializer {
         }
         return BoundingBoxVillage.from(center, radius, color, spawnsIronGolems, doors);
     }
-
-    private static AbstractBoundingBox deserializeMobSpawner(PayloadReader reader) {
-        return BoundingBoxMobSpawner.from(reader.readCoords());
-    }
 }
index e6adde8529d31f3af0b050469cc7d1b578409e7f..2aa4ff773c03c4548bdc6dc69b74d9c96199d5da 100644 (file)
@@ -1,6 +1,9 @@
 package com.irtimaled.bbor.common.messages;
 
-import com.irtimaled.bbor.common.models.*;
+import com.irtimaled.bbor.common.models.AbstractBoundingBox;
+import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
+import com.irtimaled.bbor.common.models.BoundingBoxVillage;
+import com.irtimaled.bbor.common.models.Coords;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -12,7 +15,6 @@ class BoundingBoxSerializer {
     static {
         serializers.put(BoundingBoxVillage.class, (bb, pb) -> serializeVillage((BoundingBoxVillage) bb, pb));
         serializers.put(BoundingBoxCuboid.class, (bb, pb) -> serializeStructure((BoundingBoxCuboid)bb, pb));
-        serializers.put(BoundingBoxMobSpawner.class, (bb, pb) -> serializeMobSpawner((BoundingBoxMobSpawner) bb, pb));
     }
 
     static boolean canSerialize(AbstractBoundingBox key) {
@@ -43,9 +45,4 @@ class BoundingBoxSerializer {
                 .writeCoords(boundingBox.getMinCoords())
                 .writeCoords(boundingBox.getMaxCoords());
     }
-
-    private static void serializeMobSpawner(BoundingBoxMobSpawner boundingBox, PayloadBuilder builder) {
-        builder.writeChar('M')
-                .writeCoords(boundingBox.getCoords());
-    }
 }
diff --git a/src/main/java/com/irtimaled/bbor/mixin/server/management/MixinPlayerInteractionManager.java b/src/main/java/com/irtimaled/bbor/mixin/server/management/MixinPlayerInteractionManager.java
deleted file mode 100644 (file)
index 09a5480..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.irtimaled.bbor.mixin.server.management;
-
-import com.irtimaled.bbor.common.interop.CommonInterop;
-import net.minecraft.block.Block;
-import net.minecraft.server.management.PlayerInteractionManager;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-@Mixin(PlayerInteractionManager.class)
-public class MixinPlayerInteractionManager {
-    @Shadow
-    public World world;
-
-    @Inject(method = "tryHarvestBlock", at = @At("HEAD"))
-    private void tryHarvestBlock(BlockPos pos, CallbackInfoReturnable<Boolean> cir) {
-        Block block = this.world.getBlockState(pos).getBlock();
-        CommonInterop.tryHarvestBlock(block, pos, world);
-    }
-}
index 6d50d17fec8dc6422347a78f5d9005427ffa6f55..6d81eefb501c1b248925a3e5ecda449169d9920b 100644 (file)
@@ -8,7 +8,6 @@
   "mixins": [
     "network.play.client.MixinCPacketCustomPayload",
     "server.MixinMinecraftServer",
-    "server.management.MixinPlayerInteractionManager",
     "server.management.MixinPlayerList",
     "world.MixinWorldServer",
     "world.chunk.MixinChunk"