Skip to content

Commit 727a5a3

Browse files
committed
Relocate EventsImplementedInJava contents to other classes
1 parent df78bdb commit 727a5a3

File tree

4 files changed

+104
-109
lines changed

4 files changed

+104
-109
lines changed

forge/src/main/java/juuxel/adorn/platform/forge/Adorn.java

+27-9
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
package juuxel.adorn.platform.forge;
22

33
import juuxel.adorn.AdornCommon;
4+
import juuxel.adorn.block.AdornBlockEntities;
5+
import juuxel.adorn.block.AdornBlocks;
46
import juuxel.adorn.block.variant.BlockVariantSets;
57
import juuxel.adorn.config.ConfigManager;
68
import juuxel.adorn.criterion.AdornCriteria;
9+
import juuxel.adorn.entity.AdornEntities;
10+
import juuxel.adorn.item.AdornItems;
711
import juuxel.adorn.item.group.AdornItemGroups;
12+
import juuxel.adorn.lib.AdornGameRules;
13+
import juuxel.adorn.lib.AdornSounds;
814
import juuxel.adorn.lib.AdornStats;
15+
import juuxel.adorn.lib.AdornTags;
916
import juuxel.adorn.lib.registry.Registrar;
1017
import juuxel.adorn.loot.AdornLootConditionTypes;
1118
import juuxel.adorn.loot.AdornLootFunctionTypes;
1219
import juuxel.adorn.menu.AdornMenus;
1320
import juuxel.adorn.platform.forge.client.AdornClient;
1421
import juuxel.adorn.platform.forge.compat.Compat;
22+
import juuxel.adorn.platform.forge.event.BlockEvents;
23+
import juuxel.adorn.platform.forge.event.EntityEvents;
1524
import juuxel.adorn.platform.forge.event.ItemEvents;
1625
import juuxel.adorn.platform.forge.networking.AdornNetworking;
1726
import juuxel.adorn.platform.forge.registrar.ForgeRegistrar;
@@ -30,19 +39,26 @@ public Adorn() {
3039
var modBus = ModLoadingContext.get().getActiveContainer().getEventBus();
3140
ConfigManager.get().init();
3241
modBus.addListener(this::init);
33-
new EventsImplementedInJava().register(modBus);
42+
register(AdornSounds.SOUNDS, modBus);
43+
register(AdornBlocks.BLOCKS, modBus);
44+
register(AdornBlocks.ITEMS, modBus);
45+
register(AdornItems.ITEMS, modBus);
46+
register(AdornEntities.ENTITIES, modBus);
47+
register(AdornBlockEntities.BLOCK_ENTITIES, modBus);
3448
AdornItemGroups.init();
35-
registerToBus(AdornItemGroups.ITEM_GROUPS, modBus);
49+
register(AdornItemGroups.ITEM_GROUPS, modBus);
3650
AdornRecipes.init();
37-
registerToBus(AdornMenus.MENUS, modBus);
38-
registerToBus(AdornRecipes.RECIPE_SERIALIZERS, modBus);
39-
registerToBus(AdornRecipes.RECIPE_TYPES, modBus);
40-
registerToBus(AdornLootConditionTypes.LOOT_CONDITION_TYPES, modBus);
41-
registerToBus(AdornLootFunctionTypes.LOOT_FUNCTION_TYPES, modBus);
51+
register(AdornMenus.MENUS, modBus);
52+
register(AdornRecipes.RECIPE_SERIALIZERS, modBus);
53+
register(AdornRecipes.RECIPE_TYPES, modBus);
54+
register(AdornLootConditionTypes.LOOT_CONDITION_TYPES, modBus);
55+
register(AdornLootFunctionTypes.LOOT_FUNCTION_TYPES, modBus);
4256
modBus.addListener(AdornNetworking::register);
4357
AdornCriteria.init();
44-
registerToBus(AdornCriteria.CRITERIA, modBus);
58+
register(AdornCriteria.CRITERIA, modBus);
4559
ItemEvents.register(modBus);
60+
BlockEvents.init();
61+
EntityEvents.init();
4662
modBus.addListener(AdornCapabilities::register);
4763
Compat.init(modBus);
4864
BlockVariantSets.register();
@@ -53,11 +69,13 @@ public Adorn() {
5369
}
5470
}
5571

56-
private void registerToBus(Registrar<?> registrar, IEventBus modBus) {
72+
private void register(Registrar<?> registrar, IEventBus modBus) {
5773
((ForgeRegistrar<?>) registrar).hook(modBus);
5874
}
5975

6076
private void init(FMLCommonSetupEvent event) {
77+
AdornGameRules.init();
78+
AdornTags.init();
6179
AdornStats.init();
6280
ConfigManager.get().finish();
6381
}

forge/src/main/java/juuxel/adorn/platform/forge/EventsImplementedInJava.java

-100
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package juuxel.adorn.platform.forge.event;
2+
3+
import juuxel.adorn.CommonEventHandlers;
4+
import juuxel.adorn.block.SneakClickHandler;
5+
import net.minecraft.util.ActionResult;
6+
import net.neoforged.neoforge.common.NeoForge;
7+
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
8+
9+
public final class BlockEvents {
10+
public static void init() {
11+
NeoForge.EVENT_BUS.addListener(BlockEvents::handleCarpetedBlocks);
12+
NeoForge.EVENT_BUS.addListener(BlockEvents::handleSneakClicks);
13+
}
14+
15+
private static void handleCarpetedBlocks(PlayerInteractEvent.RightClickBlock event) {
16+
ActionResult result = CommonEventHandlers.handleCarpets(event.getEntity(), event.getLevel(), event.getHand(), event.getHitVec());
17+
18+
if (result != ActionResult.PASS) {
19+
event.setCancellationResult(result);
20+
event.setCanceled(true);
21+
}
22+
}
23+
24+
private static void handleSneakClicks(PlayerInteractEvent.RightClickBlock event) {
25+
var player = event.getEntity();
26+
var state = event.getLevel().getBlockState(event.getPos());
27+
28+
// Check that:
29+
// - the block is a sneak-click handler
30+
// - the player is sneaking
31+
// - the player isn't holding an item (for block item and bucket support)
32+
if (state.getBlock() instanceof SneakClickHandler clickHandler && player.isSneaking() && player.getStackInHand(event.getHand()).isEmpty()) {
33+
var result = clickHandler.onSneakClick(state, event.getLevel(), event.getPos(), player, event.getHand(), event.getHitVec());
34+
35+
if (result != ActionResult.PASS) {
36+
event.setCancellationResult(result);
37+
event.setCanceled(true);
38+
}
39+
}
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package juuxel.adorn.platform.forge.event;
2+
3+
import juuxel.adorn.block.SofaBlock;
4+
import net.minecraft.util.math.BlockPos;
5+
import net.minecraft.world.World;
6+
import net.neoforged.bus.api.Event;
7+
import net.neoforged.neoforge.common.NeoForge;
8+
import net.neoforged.neoforge.event.entity.player.PlayerSetSpawnEvent;
9+
import net.neoforged.neoforge.event.entity.player.SleepingTimeCheckEvent;
10+
11+
public final class EntityEvents {
12+
public static void init() {
13+
NeoForge.EVENT_BUS.addListener(EntityEvents::handleSofaSleepTime);
14+
NeoForge.EVENT_BUS.addListener(EntityEvents::preventSofaSpawns);
15+
}
16+
17+
private static void handleSofaSleepTime(SleepingTimeCheckEvent event) {
18+
BlockPos sleepingPos = event.getSleepingLocation().orElse(null);
19+
if (sleepingPos == null) return;
20+
World world = event.getEntity().getWorld();
21+
22+
if (world.isDay() && world.getBlockState(sleepingPos).getBlock() instanceof SofaBlock) {
23+
event.setResult(Event.Result.ALLOW);
24+
}
25+
}
26+
27+
private static void preventSofaSpawns(PlayerSetSpawnEvent event) {
28+
BlockPos pos = event.getNewSpawn();
29+
30+
if (pos != null) {
31+
if (!event.isForced() && event.getEntity().getWorld().getBlockState(pos).getBlock() instanceof SofaBlock) {
32+
event.setCanceled(true);
33+
}
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)