okay, so hear me out... reflection to add interactions

This commit is contained in:
2026-01-20 20:20:51 +01:00
parent 6f94e94a86
commit 1ffe4fe924
6 changed files with 72 additions and 111 deletions
@@ -8,6 +8,7 @@ import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
import com.hypixel.hytale.server.core.entity.InteractionContext;
import com.hypixel.hytale.server.core.entity.InteractionManager;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.core.event.events.BootEvent;
import com.hypixel.hytale.server.core.event.events.ecs.UseBlockEvent;
import com.hypixel.hytale.server.core.modules.interaction.InteractionSimulationHandler;
import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
@@ -15,10 +16,16 @@ import com.hypixel.hytale.server.core.plugin.JavaPlugin;
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.World;
import me.youhavetrouble.quickerstacker.interaction.QuickStackInteraction;
import me.youhavetrouble.quickerstacker.interaction.QuickStackToChestInteraction;
import me.youhavetrouble.quickerstacker.interaction.QuickStackToNearbyChestsInteraction;
import org.checkerframework.checker.nullness.compatqual.NonNullDecl;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class QuickerStacker extends JavaPlugin {
public QuickerStacker(@NonNullDecl JavaPluginInit init) {
@@ -27,7 +34,45 @@ public class QuickerStacker extends JavaPlugin {
@Override
public void setup() {
this.getCodecRegistry(Interaction.CODEC).register("Yht_QuickerStacker_QuickStackToChest", QuickStackToChestInteraction.class, QuickStackToChestInteraction.CODEC);
this.getCodecRegistry(Interaction.CODEC)
.register(
"Yht_QuickerStacker_QuickStack",
QuickStackInteraction.class,
QuickStackInteraction.CODEC
);
this.getCodecRegistry(Interaction.CODEC)
.register(
"Yht_QuickerStacker_QuickStackToChest",
QuickStackToChestInteraction.class,
QuickStackToChestInteraction.CODEC
);
this.getCodecRegistry(Interaction.CODEC)
.register(
"Yht_QuickerStacker_QuickStackToNearbyChests",
QuickStackToNearbyChestsInteraction.class,
QuickStackToNearbyChestsInteraction.CODEC
);
this.getEventRegistry().registerGlobal(BootEvent.class, (event) -> {
for (BlockType block : BlockType.getAssetMap().getAssetMap().values()) {
if (!"Open_Container".equals(block.getInteractions().get(InteractionType.Use))) continue;
try {
Field interactionsField = block.getClass().getDeclaredField("interactions");
interactionsField.setAccessible(true);
Object interactionsObj = interactionsField.get(block);
if (!(interactionsObj instanceof Map<?,?> interactionsMap)) continue;
Map<Object, Object> modifiableMap = new HashMap<>(interactionsMap);
modifiableMap.put(InteractionType.Secondary, "Yht_QuickerStacker_QuickStack");
interactionsField.set(block, modifiableMap);
} catch (NoSuchFieldException | IllegalAccessException _) {
System.out.println("Error modifying interactions for block type: " + block.getId());
continue;
}
System.out.println(block.getId());
System.out.println(block.getInteractions().get(InteractionType.Secondary));
}
});
}
/**