strip registry & map
This commit is contained in:
6 files changed
+116
-12
No files matched your search
@@ -3,6 +3,7 @@ package io.ib67.sfcraft;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.inject.*;
|
||||
import io.ib67.sfcraft.entity.SomeCustomAllayEntity;
|
||||
import io.ib67.sfcraft.module.*;
|
||||
import io.ib67.sfcraft.module.chat.ChatPingModule;
|
||||
import io.ib67.sfcraft.module.chat.ChatSendLocModule;
|
||||
@@ -16,11 +17,26 @@ import io.ib67.sfcraft.inject.MinecraftServerSupplier;
|
||||
import io.ib67.sfcraft.registry.event.RandomEventRegistry;
|
||||
import io.ib67.sfcraft.module.command.BackModule;
|
||||
import io.ib67.sfcraft.module.command.ManagementModule;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.SpawnGroup;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
@Log4j2
|
||||
public class SFCraftInitializer extends GuiceModInitializer {
|
||||
public static final EntityType<SomeCustomAllayEntity> ALLAY = Registry.register(
|
||||
Registries.ENTITY_TYPE,
|
||||
Identifier.of("sfcraft", "allay"),
|
||||
FabricEntityTypeBuilder.create(SpawnGroup.CREATURE, SomeCustomAllayEntity::new).build()
|
||||
);
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.configure();
|
||||
@@ -58,9 +74,14 @@ public class SFCraftInitializer extends GuiceModInitializer {
|
||||
SFCraft.server = minecraftServer;
|
||||
SFCraft.injector = getInjector();
|
||||
getModuleManager().switchGlobalState(Lifecycle.State.ENABLED);
|
||||
test();
|
||||
log.info("Load completed! " + getModuleManager().getModules().size() + " modules were loaded.");
|
||||
}
|
||||
|
||||
private void test() {
|
||||
FabricDefaultAttributeRegistry.register(ALLAY,SomeCustomAllayEntity.createAllayAttributes().build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Injector onInit() {
|
||||
return Guice.createInjector(
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package io.ib67.sfcraft.entity;
|
||||
|
||||
import io.ib67.sfcraft.SFCraftInitializer;
|
||||
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.minecraft.entity.EntityDimensions;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.SpawnGroup;
|
||||
import net.minecraft.entity.passive.AllayEntity;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class SomeCustomAllayEntity extends AllayEntity {
|
||||
public SomeCustomAllayEntity(EntityType<SomeCustomAllayEntity> entityEntityType, World world) {
|
||||
super(entityEntityType, world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Text getName() {
|
||||
return Text.of("guider");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
var nearbyPlayer = PlayerLookup.around((ServerWorld) getWorld(), getPos(), 20D);
|
||||
for (ServerPlayerEntity serverPlayerEntity : nearbyPlayer) {
|
||||
this.navigation.startMovingTo(serverPlayerEntity, 2f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,11 @@ import io.ib67.sfcraft.SFCraft;
|
||||
import io.ib67.sfcraft.callback.SFCallbacks;
|
||||
import io.ib67.sfcraft.mixin.server.bridge.ServerPlayerBridge;
|
||||
import io.ib67.sfcraft.registry.chat.SimpleMessageDecorator;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.network.RegistryByteBuf;
|
||||
import net.minecraft.network.message.MessageDecorator;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package io.ib67.sfcraft.mixin.server.hack;
|
||||
|
||||
import io.ib67.sfcraft.SFCraftInitializer;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||
|
||||
@Mixin(EntitySpawnS2CPacket.class)
|
||||
public class EntitySpawnS2CPacketMixin {
|
||||
@ModifyArg(method = "write", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/codec/PacketCodec;encode(Ljava/lang/Object;Ljava/lang/Object;)V"), index = 1)
|
||||
public Object mapModType(Object type) {
|
||||
if (type == SFCraftInitializer.ALLAY) {
|
||||
return EntityType.ALLAY;
|
||||
}
|
||||
return type;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package io.ib67.sfcraft.mixin.server.hack;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||
import net.fabricmc.fabric.impl.registry.sync.packet.DirectRegistryPacketHandler;
|
||||
import net.minecraft.util.Identifier;
|
||||
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;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Mixin(DirectRegistryPacketHandler.class)
|
||||
public abstract class RegistryHandlerMixin {
|
||||
@Inject(method = "sendPacket", at = @At("HEAD"), remap = false)
|
||||
public void sf$removeRegistry(Consumer<DirectRegistryPacketHandler.Payload> sender, Map<Identifier, Object2IntMap<Identifier>> registryMap, CallbackInfo ci) {
|
||||
registryMap.clear();
|
||||
}
|
||||
}
|
||||
@@ -8,21 +8,23 @@
|
||||
"client": [
|
||||
],
|
||||
"server": [
|
||||
"server.fixes.EndermanEntityMixin$ChaseGoalMixin",
|
||||
"server.bridge.ServerWorldBridge",
|
||||
"server.bridge.ServerPlayerBridge",
|
||||
"server.bridge.EntityBridge",
|
||||
"server.MinecraftServerMixin",
|
||||
"server.ServerPlayNetworkHandlerMixin",
|
||||
"server.SleepManagerMixin",
|
||||
"server.ServerWorldMixin",
|
||||
"server.EntityMixin",
|
||||
"server.AbstractFurnaceBlockMixin",
|
||||
"server.ServerHandshakeNetworkHandlerMixin",
|
||||
"server.EntityMixin",
|
||||
"server.LegacyQueryHandlerMixin",
|
||||
"server.ServerPlayerEntityMixin",
|
||||
"server.MinecraftServerMixin",
|
||||
"server.PlayerEntityMixin",
|
||||
"server.ServerLoginNetworkHandlerMixin"
|
||||
"server.ServerHandshakeNetworkHandlerMixin",
|
||||
"server.ServerLoginNetworkHandlerMixin",
|
||||
"server.ServerPlayerEntityMixin",
|
||||
"server.ServerPlayNetworkHandlerMixin",
|
||||
"server.ServerWorldMixin",
|
||||
"server.SleepManagerMixin",
|
||||
"server.bridge.EntityBridge",
|
||||
"server.bridge.ServerPlayerBridge",
|
||||
"server.bridge.ServerWorldBridge",
|
||||
"server.fixes.EndermanEntityMixin$ChaseGoalMixin",
|
||||
"server.hack.EntitySpawnS2CPacketMixin",
|
||||
"server.hack.RegistryHandlerMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
||||
Reference in new issue
Block a user