Skip to content

Commit

Permalink
Migrate to deferred register, safeRunWhenOn, add localization (#54)
Browse files Browse the repository at this point in the history
  • Loading branch information
ChloeDawn committed Feb 16, 2021
1 parent 13bfd39 commit 3889660
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 20 deletions.
29 changes: 17 additions & 12 deletions src/main/java/com/blamejared/clumps/Clumps.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,40 +8,45 @@
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent.Register;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

import net.minecraftforge.registries.ObjectHolder;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.*;

@Mod(Clumps.MODID)
public class Clumps {

public static final String MODID = "clumps";
@ObjectHolder(Clumps.MODID + ":xp_orb_big")
public static final EntityType<EntityXPOrbBig> BIG_ORB_ENTITY_TYPE = null;

private static final DeferredRegister<EntityType<?>> DEFERRED_REGISTER = DeferredRegister.create(ForgeRegistries.ENTITIES, MODID);
public static final RegistryObject<EntityType<EntityXPOrbBig>> BIG_ORB_ENTITY_TYPE = DEFERRED_REGISTER.register("xp_orb_big", () -> EntityType.Builder.<EntityXPOrbBig>create(EntityXPOrbBig::new, EntityClassification.MISC).size(0.5f, 0.5f).build(MODID + ":xp_orb_big"));

public Clumps() {
final IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(),
forgeBus = MinecraftForge.EVENT_BUS;

DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> modBus.addListener(ClumpsClient::setupClient));
modBus.addGenericListener(EntityType.class, this::registerEntity);
DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> ClumpsClient::register);
DEFERRED_REGISTER.register(modBus);
modBus.addListener(this::setup);
forgeBus.addListener(this::joinWorld);
forgeBus.addListener(this::update);

}

private void registerEntity(Register<EntityType<?>> register) {
register.getRegistry().register(EntityType.Builder.create((type, world) -> new EntityXPOrbBig(world), EntityClassification.MISC).size(0.5f, 0.5f).build(Clumps.MODID + ":xp_orb_big").setRegistryName(Clumps.MODID, "xp_orb_big"));
}


private static final List<ExperienceOrbEntity> orbs = new ArrayList<>();

private void setup(FMLCommonSetupEvent e) {
ObfuscationReflectionHelper.setPrivateValue(EntityType.class, BIG_ORB_ENTITY_TYPE.get(), EntityType.EXPERIENCE_ORB.getTranslationKey(), "field_210762_aX");
}

private void update(TickEvent.WorldTickEvent e) {
if(e.world.isRemote || e.phase == TickEvent.Phase.START) {
Expand All @@ -63,7 +68,7 @@ private void update(TickEvent.WorldTickEvent e) {
}

private void joinWorld(EntityJoinWorldEvent e) {
if(e.getEntity() instanceof ExperienceOrbEntity && !(e.getEntity() instanceof EntityXPOrbBig)) {
if(e.getEntity() instanceof ExperienceOrbEntity && e.getEntity().getType() != BIG_ORB_ENTITY_TYPE.get()) {
World world = e.getEntity().world;
if(!world.isRemote) {
orbs.add((ExperienceOrbEntity) e.getEntity());
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/com/blamejared/clumps/ClumpsClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@

import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

public class ClumpsClient {
protected static void register() {
FMLJavaModLoadingContext.get().getModEventBus().addListener(ClumpsClient::setupClient);
}

protected static void setupClient(FMLClientSetupEvent event) {
RenderingRegistry.registerEntityRenderingHandler(Clumps.BIG_ORB_ENTITY_TYPE, RenderXPOrbBig::new);
RenderingRegistry.registerEntityRenderingHandler(Clumps.BIG_ORB_ENTITY_TYPE.get(), RenderXPOrbBig::new);
}
}
10 changes: 3 additions & 7 deletions src/main/java/com/blamejared/clumps/entities/EntityXPOrbBig.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public class EntityXPOrbBig extends ExperienceOrbEntity implements IEntityAdditi
private int clumpedOrbs;

public EntityXPOrbBig(World worldIn, double x, double y, double z, int expValue, int clumpedOrbs) {
super(Clumps.BIG_ORB_ENTITY_TYPE, worldIn);
super(Clumps.BIG_ORB_ENTITY_TYPE.get(), worldIn);
this.setPosition(x, y, z);
this.rotationYaw = (float) (this.rand.nextDouble() * 360.0D);
this.setMotion((this.rand.nextDouble() * (double) 0.2F - (double) 0.1F) * 2.0D, this.rand.nextDouble() * 0.2D * 2.0D, (this.rand.nextDouble() * (double) 0.2F - (double) 0.1F) * 2.0D);
Expand All @@ -44,13 +44,9 @@ public EntityXPOrbBig(World worldIn, double x, double y, double z, int expValue,
}

public EntityXPOrbBig(EntityType<? extends ExperienceOrbEntity> type, World world) {
super(Clumps.BIG_ORB_ENTITY_TYPE, world);
super(type, world);
}

public EntityXPOrbBig(World world) {
super(Clumps.BIG_ORB_ENTITY_TYPE, world);
}


@Override
public void tick() {
if(!world.isRemote && this.xpValue == 0) {
Expand Down

0 comments on commit 3889660

Please sign in to comment.