Hbm-s-Nuclear-Tech-GIT/src/main/java/com/hbm/handler/DispenserBehaviorHandler.java
2025-08-18 16:35:50 +02:00

314 lines
17 KiB
Java

package com.hbm.handler;
import com.hbm.entity.grenade.EntityGrenadeASchrab;
import com.hbm.entity.grenade.EntityGrenadeBlackHole;
import com.hbm.entity.grenade.EntityGrenadeBreach;
import com.hbm.entity.grenade.EntityGrenadeBurst;
import com.hbm.entity.grenade.EntityGrenadeCloud;
import com.hbm.entity.grenade.EntityGrenadeCluster;
import com.hbm.entity.grenade.EntityGrenadeDynamite;
import com.hbm.entity.grenade.EntityGrenadeElectric;
import com.hbm.entity.grenade.EntityGrenadeFire;
import com.hbm.entity.grenade.EntityGrenadeFlare;
import com.hbm.entity.grenade.EntityGrenadeFrag;
import com.hbm.entity.grenade.EntityGrenadeGas;
import com.hbm.entity.grenade.EntityGrenadeGascan;
import com.hbm.entity.grenade.EntityGrenadeGeneric;
import com.hbm.entity.grenade.EntityGrenadeIFBouncy;
import com.hbm.entity.grenade.EntityGrenadeIFBrimstone;
import com.hbm.entity.grenade.EntityGrenadeIFConcussion;
import com.hbm.entity.grenade.EntityGrenadeIFGeneric;
import com.hbm.entity.grenade.EntityGrenadeIFHE;
import com.hbm.entity.grenade.EntityGrenadeIFHopwire;
import com.hbm.entity.grenade.EntityGrenadeIFImpact;
import com.hbm.entity.grenade.EntityGrenadeIFIncendiary;
import com.hbm.entity.grenade.EntityGrenadeIFMystery;
import com.hbm.entity.grenade.EntityGrenadeIFNull;
import com.hbm.entity.grenade.EntityGrenadeIFSpark;
import com.hbm.entity.grenade.EntityGrenadeIFSticky;
import com.hbm.entity.grenade.EntityGrenadeIFToxic;
import com.hbm.entity.grenade.EntityGrenadeImpactGeneric;
import com.hbm.entity.grenade.EntityGrenadeLemon;
import com.hbm.entity.grenade.EntityGrenadeMIRV;
import com.hbm.entity.grenade.EntityGrenadeMk2;
import com.hbm.entity.grenade.EntityGrenadeNuclear;
import com.hbm.entity.grenade.EntityGrenadeNuke;
import com.hbm.entity.grenade.EntityGrenadePC;
import com.hbm.entity.grenade.EntityGrenadePlasma;
import com.hbm.entity.grenade.EntityGrenadePoison;
import com.hbm.entity.grenade.EntityGrenadePulse;
import com.hbm.entity.grenade.EntityGrenadeSchrabidium;
import com.hbm.entity.grenade.EntityGrenadeShrapnel;
import com.hbm.entity.grenade.EntityGrenadeSmart;
import com.hbm.entity.grenade.EntityGrenadeStrong;
import com.hbm.entity.grenade.EntityGrenadeTau;
import com.hbm.entity.grenade.EntityGrenadeZOMG;
import com.hbm.entity.grenade.EntityWastePearl;
import com.hbm.items.ModItems;
import com.hbm.items.tool.ItemFertilizer;
import com.hbm.items.weapon.ItemGenericGrenade;
import net.minecraft.block.BlockDispenser;
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
import net.minecraft.dispenser.BehaviorProjectileDispense;
import net.minecraft.dispenser.IBlockSource;
import net.minecraft.dispenser.IPosition;
import net.minecraft.entity.IProjectile;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
public class DispenserBehaviorHandler {
public static void init() {
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_generic, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeGeneric(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_strong, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeStrong(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_frag, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeFrag(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_fire, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeFire(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_cluster, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeCluster(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_flare, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeFlare(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_electric, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeElectric(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_poison, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadePoison(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_gas, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeGas(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_schrabidium, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeSchrabidium(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_nuke, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeNuke(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_nuclear, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeNuclear(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_pulse, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadePulse(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_plasma, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadePlasma(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_tau, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeTau(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_lemon, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeLemon(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_mk2, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeMk2(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_aschrab, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeASchrab(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_zomg, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeZOMG(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_shrapnel, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeShrapnel(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_black_hole, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeBlackHole(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_gascan, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeGascan(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_cloud, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeCloud(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_pink_cloud, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadePC(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_smart, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeSmart(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_mirv, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeMIRV(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_breach, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeBreach(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_burst, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeBurst(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_generic, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFGeneric(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_he, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFHE(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_bouncy, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFBouncy(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_sticky, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFSticky(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_impact, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFImpact(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_incendiary, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFIncendiary(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_toxic, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFToxic(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_concussion, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFConcussion(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_brimstone, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFBrimstone(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_mystery, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFMystery(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_spark, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFSpark(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_hopwire, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFHopwire(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_null, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeIFNull(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.nuclear_waste_pearl, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityWastePearl(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.stick_dynamite, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeDynamite(world, position.getX(), position.getY(), position.getZ());
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_kyiv, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeImpactGeneric(world, position.getX(), position.getY(), position.getZ()).setType((ItemGenericGrenade) ModItems.grenade_kyiv);
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.stick_dynamite_fishing, new BehaviorProjectileDispense() {
protected IProjectile getProjectileEntity(World world, IPosition position) {
return new EntityGrenadeImpactGeneric(world, position.getX(), position.getY(), position.getZ()).setType((ItemGenericGrenade) ModItems.stick_dynamite_fishing);
}
});
BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.powder_fertilizer, new BehaviorDefaultDispenseItem() {
private boolean dispenseSound = true;
@Override protected ItemStack dispenseStack(IBlockSource source, ItemStack stack) {
EnumFacing facing = BlockDispenser.func_149937_b(source.getBlockMetadata());
World world = source.getWorld();
int x = source.getXInt() + facing.getFrontOffsetX();
int y = source.getYInt() + facing.getFrontOffsetY();
int z = source.getZInt() + facing.getFrontOffsetZ();
this.dispenseSound = ItemFertilizer.useFertillizer(stack, world, x, y, z);
return stack;
}
@Override protected void playDispenseSound(IBlockSource source) {
if(this.dispenseSound) {
source.getWorld().playAuxSFX(1000, source.getXInt(), source.getYInt(), source.getZInt(), 0);
} else {
source.getWorld().playAuxSFX(1001, source.getXInt(), source.getYInt(), source.getZInt(), 0);
}
}
});
}
}