Fix enchantments, item lore handlers, add mob egg drop chance to lore text. Fix mob egg drop rates. Fix player head drop rates

This commit is contained in:
zontreck 2024-04-01 05:17:35 -07:00
parent 7e1f4eea48
commit afb21dd2c8
25 changed files with 121 additions and 558 deletions

View file

@ -168,6 +168,7 @@ dependencies {
runtimeOnly fg.deobf("curse.maven:mekanism-268560:5125665")
runtimeOnly fg.deobf("curse.maven:worldedit-225608:4586218")
runtimeOnly fg.deobf("curse.maven:jei-238222:5101366")
runtimeOnly fg.deobf("curse.maven:nbtedit-reborn-678133:5082493")
// Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime

View file

@ -48,7 +48,7 @@ mod_name=Thresholds
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=GPLv3
# The mod version. See https://semver.org/
mod_version=1201.4.040124.0234
mod_version=1201.4.040124.0514
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
# This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html

View file

@ -1,7 +1,8 @@
package dev.zontreck.otemod.blocks.entity;
import dev.zontreck.libzontreck.items.InputItemStackHandler;
import dev.zontreck.libzontreck.items.OutputItemStackHandler;
import dev.zontreck.libzontreck.util.ChatHelpers;
import dev.zontreck.otemod.implementation.OutputItemStackHandler;
import dev.zontreck.otemod.implementation.compressor.CompressionChamberMenu;
import dev.zontreck.otemod.implementation.energy.IThresholdsEnergy;
import dev.zontreck.otemod.implementation.energy.OTEEnergy;
@ -19,17 +20,14 @@ import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.ContainerData;
import net.minecraft.world.inventory.SimpleContainerData;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.energy.EnergyStorage;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemStackHandler;
@ -47,6 +45,8 @@ public class CompressionChamberBlockEntity extends BlockEntity implements MenuPr
super(ModEntities.COMPRESSION_CHAMBER.get(), pPos, pBlockState);
outputSlot = new OutputItemStackHandler(outputItems);
inputSlot = new InputItemStackHandler(itemsHandler);
data = new ContainerData() {
@Override
public int get(int i) {
@ -91,6 +91,7 @@ public class CompressionChamberBlockEntity extends BlockEntity implements MenuPr
}
};
private ItemStackHandler outputSlot;
private ItemStackHandler inputSlot;
private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQUIREMENT*3, ENERGY_REQUIREMENT*512) {
@ -148,7 +149,7 @@ public class CompressionChamberBlockEntity extends BlockEntity implements MenuPr
public void onLoad()
{
super.onLoad();
lazyItemHandler = LazyOptional.of(()->itemsHandler);
lazyItemHandler = LazyOptional.of(()->inputSlot);
lazyOutputItems = LazyOptional.of(()->outputSlot);
lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE);
}

View file

@ -1,6 +1,7 @@
package dev.zontreck.otemod.blocks.entity;
import dev.zontreck.otemod.implementation.OutputItemStackHandler;
import dev.zontreck.libzontreck.items.InputItemStackHandler;
import dev.zontreck.libzontreck.items.OutputItemStackHandler;
import dev.zontreck.otemod.implementation.energy.IThresholdsEnergy;
import dev.zontreck.otemod.implementation.energy.OTEEnergy;
import dev.zontreck.otemod.implementation.scrubber.ItemScrubberMenu;
@ -58,6 +59,8 @@ public class ItemScrubberBlockEntity extends BlockEntity implements MenuProvider
}
};
private ItemStackHandler outputSlot;
private ItemStackHandler inputSlot;
private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) {
@ -78,6 +81,7 @@ public class ItemScrubberBlockEntity extends BlockEntity implements MenuProvider
public ItemScrubberBlockEntity(BlockPos pos, BlockState state) {
super(ModEntities.ITEM_SCRUBBER.get(), pos, state);
outputSlot = new OutputItemStackHandler(outputItems);
inputSlot = new InputItemStackHandler(itemsHandler);
this.data = new ContainerData() {
@ -148,7 +152,7 @@ public class ItemScrubberBlockEntity extends BlockEntity implements MenuProvider
public void onLoad()
{
super.onLoad();
lazyItemHandler = LazyOptional.of(()->itemsHandler);
lazyItemHandler = LazyOptional.of(()->inputSlot);
lazyOutputItems = LazyOptional.of(()->outputSlot);
lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE);
}

View file

@ -1,7 +1,8 @@
package dev.zontreck.otemod.blocks.entity;
import dev.zontreck.libzontreck.items.InputItemStackHandler;
import dev.zontreck.libzontreck.items.OutputItemStackHandler;
import dev.zontreck.libzontreck.util.ItemUtils;
import dev.zontreck.otemod.implementation.OutputItemStackHandler;
import dev.zontreck.otemod.implementation.energy.IThresholdsEnergy;
import dev.zontreck.otemod.implementation.energy.OTEEnergy;
import dev.zontreck.otemod.implementation.scrubber.MagicalScrubberMenu;
@ -63,6 +64,7 @@ public class MagicalScrubberBlockEntity extends BlockEntity implements MenuProvi
}
};
private ItemStackHandler outputSlot;
private ItemStackHandler inputSlot;
private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) {
@ -83,6 +85,7 @@ public class MagicalScrubberBlockEntity extends BlockEntity implements MenuProvi
public MagicalScrubberBlockEntity(BlockPos pos, BlockState state) {
super(ModEntities.MAGICAL_SCRUBBER.get(), pos, state);
outputSlot = new OutputItemStackHandler(outputItems);
inputSlot = new InputItemStackHandler(itemsHandler);
this.data = new ContainerData() {
@ -153,7 +156,7 @@ public class MagicalScrubberBlockEntity extends BlockEntity implements MenuProvi
public void onLoad()
{
super.onLoad();
lazyItemHandler = LazyOptional.of(()->itemsHandler);
lazyItemHandler = LazyOptional.of(()->inputSlot);
lazyOutputItems = LazyOptional.of(()->outputSlot);
lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE);
}

View file

@ -1,12 +1,10 @@
package dev.zontreck.otemod.blocks.entity;
import dev.zontreck.libzontreck.util.ItemUtils;
import dev.zontreck.otemod.implementation.OutputItemStackHandler;
import dev.zontreck.libzontreck.items.InputItemStackHandler;
import dev.zontreck.libzontreck.items.OutputItemStackHandler;
import dev.zontreck.otemod.implementation.energy.IThresholdsEnergy;
import dev.zontreck.otemod.implementation.energy.OTEEnergy;
import dev.zontreck.otemod.implementation.scrubber.MagicalScrubberMenu;
import dev.zontreck.otemod.implementation.uncrafting.UncrafterMenu;
import dev.zontreck.otemod.items.PartialItem;
import dev.zontreck.otemod.networking.ModMessages;
import dev.zontreck.otemod.networking.packets.EnergySyncS2CPacket;
import net.minecraft.core.BlockPos;
@ -20,16 +18,7 @@ import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.ContainerData;
import net.minecraft.world.inventory.CraftingContainer;
import net.minecraft.world.item.EnchantedBookItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.EnchantmentInstance;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
@ -39,7 +28,6 @@ import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemStackHandler;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable;
import java.util.*;
@ -70,6 +58,7 @@ public class UncrafterBlockEntity extends BlockEntity implements MenuProvider, I
}
};
private ItemStackHandler outputSlot;
private ItemStackHandler inputSlot;
private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) {
@ -90,6 +79,7 @@ public class UncrafterBlockEntity extends BlockEntity implements MenuProvider, I
public UncrafterBlockEntity(BlockPos pos, BlockState state) {
super(ModEntities.UNCRAFTER.get(), pos, state);
outputSlot = new OutputItemStackHandler(outputItems);
inputSlot = new InputItemStackHandler(itemsHandler);
this.data = new ContainerData() {
@ -160,7 +150,7 @@ public class UncrafterBlockEntity extends BlockEntity implements MenuProvider, I
public void onLoad()
{
super.onLoad();
lazyItemHandler = LazyOptional.of(()->itemsHandler);
lazyItemHandler = LazyOptional.of(()->inputSlot);
lazyOutputItems = LazyOptional.of(()->outputSlot);
lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE);
}

View file

@ -83,6 +83,7 @@ public class ServerConfig
tag.put(Cooldowns.TAG_NAME, cooldowns.save());
tag.put(AntiGrief.TAG_NAME, antigrief.save());
tag.put(ChatOverrides.TAG_NAME, chatOverrides.save());
tag.put(Drops.TAG_NAME, drops.save());
return tag;

View file

@ -10,8 +10,8 @@ public class Drops
public static final String TAG_PLAYER_HEAD_CHANCE = "playerHeadChance";
public boolean enablePlayerHeadChance = true;
public float mobEggingChance = 0.25f;
public float playerHeadChance=0.5f;
public int mobEggingChance = 5;
public int playerHeadChance=10;
public CompoundTag save()
@ -32,10 +32,10 @@ public class Drops
drops.enablePlayerHeadChance = tag.getBoolean(TAG_PLAYER_HEAD_DROPS);
if(tag.contains(TAG_SPAWN_EGG_CHANCE))
drops.mobEggingChance = tag.getFloat(TAG_SPAWN_EGG_CHANCE);
drops.mobEggingChance = tag.getInt(TAG_SPAWN_EGG_CHANCE);
if(tag.contains(TAG_PLAYER_HEAD_CHANCE))
drops.playerHeadChance = tag.getFloat(TAG_PLAYER_HEAD_CHANCE);
drops.playerHeadChance = tag.getInt(TAG_PLAYER_HEAD_CHANCE);
return drops;
}

View file

@ -7,6 +7,8 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.EnchantmentCategory;
import java.util.Random;
public class MobEggEnchantment extends Enchantment
{
public static final String TAG_BIAS = "mob_egging_bias";
@ -59,17 +61,27 @@ public class MobEggEnchantment extends Enchantment
public static boolean givesEgg(int level, int bias)
{
double CHANCE = ServerConfig.drops.mobEggingChance * 100;
int CHANCE = ServerConfig.drops.mobEggingChance;
CHANCE *= (level / 0.5);
CHANCE += level;
CHANCE += bias;
double rng = Math.random()*100000;
if(ServerConfig.general.debug)
{
OTEMod.LOGGER.info("Spawn Egg Chance (" + CHANCE + ") [" + rng + "]");
OTEMod.LOGGER.info("Spawn Egg Chance (" + CHANCE + ")");
}
return (rng <= CHANCE);
return rollChance((int)CHANCE);
}
public static boolean rollChance(int percent)
{
Random rng = new Random();
int test = rng.nextInt(100) + 1;
if(ServerConfig.general.debug)
{
OTEMod.LOGGER.info("Spawn Egg Dice Roll (" + test + " / " + percent + ")");
}
return test <= percent;
}
}

View file

@ -1,25 +1,14 @@
package dev.zontreck.otemod.entities;
import dev.zontreck.otemod.OTEMod;
import dev.zontreck.otemod.entities.monsters.PossumEntity;
import dev.zontreck.otemod.items.ThrownMobCaptureBall;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.entity.projectile.Snowball;
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class ModEntityTypes {
public static final DeferredRegister<EntityType<?>> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, OTEMod.MOD_ID);
//public static final RegistryObject<EntityType<? extends PossumEntity>> POSSUM = ENTITIES.register("possum", ()-> EntityType.Builder.of(PossumEntity::new, MobCategory.CREATURE).sized(1.5f, 0.5f).build(new ResourceLocation(OTEMod.MOD_ID, "possum").toString()));
private static EntityType registerEntity(EntityType.Builder builder, String entityName) {
return builder.build(entityName);
}

View file

@ -1,59 +0,0 @@
package dev.zontreck.otemod.entities.monsters;
public class PossumEntity
{
/*
public PossumEntity(EntityType<? extends Animal> pEntityType, Level pLevel) {
super(pEntityType, pLevel);
//TODO Auto-generated constructor stub
}
private AnimationFactory factory = GeckoLibUtil.createFactory(this);
@Override
public AnimationFactory getFactory() {
return factory;
}
@Override
public PossumEntity getBreedOffspring(ServerLevel pLevel, AgeableMob pOtherParent) {
return (PossumEntity) ModEntityTypes.POSSUM.get().create(pLevel);
}
@Override
public boolean isFood(ItemStack pStack)
{
return pStack.is(Items.APPLE);
}
public static AttributeSupplier createAttributes() {
return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 12.0D).add(Attributes.MOVEMENT_SPEED, (double)0.2F).build();
}
private <E extends IAnimatable> PlayState predicate(AnimationEvent<E> ev)
{
if(ev.isMoving())
{
// change anim
return PlayState.CONTINUE;
}
ev.getController().setAnimation(new AnimationBuilder().addAnimation("animation.model.idle", ILoopType.EDefaultLoopTypes.LOOP));
return PlayState.CONTINUE;
}
@Override
public void registerControllers(AnimationData data) {
data.addAnimationController(new AnimationController<IAnimatable>(this, "controller", 0, this::predicate));
}
@Override
public void registerGoals()
{
this.goalSelector.addGoal(0, new FloatGoal(this));
this.goalSelector.addGoal(1, new WaterAvoidingRandomStrollGoal(this, 1));
}*/
}

View file

@ -1,22 +0,0 @@
package dev.zontreck.otemod.entities.monsters.client;
public class PossumModel
{
/*
@Override
public ResourceLocation getAnimationFileLocation(PossumEntity animatable) {
return new ResourceLocation(OTEMod.MOD_ID, "animations/possum.animation.json");
}
@Override
public ResourceLocation getModelLocation(PossumEntity object) {
return new ResourceLocation(OTEMod.MOD_ID, "geo/possum.geo.json");
}
@Override
public ResourceLocation getTextureLocation(PossumEntity object) {
return new ResourceLocation(OTEMod.MOD_ID, "textures/entity/possum_texture.png");
}*/
}

View file

@ -1,29 +0,0 @@
package dev.zontreck.otemod.entities.monsters.client;
public class PossumRenderer
{
/*
public PossumRenderer(EntityRendererProvider.Context renderManager) {
super(renderManager, new PossumModel());
this.shadowRadius=0.3f;
}
@Override
public ResourceLocation getTextureLocation(PossumEntity entity)
{
return new ResourceLocation(OTEMod.MOD_ID, "textures/entity/possum_texture.png");
}
@Override
public RenderType getRenderType(PossumEntity animatable, float partialTicks,
PoseStack stack, MultiBufferSource buffer,
VertexConsumer consumer, int packed, ResourceLocation loc)
{
return super.getRenderType(animatable, partialTicks, stack, buffer, consumer, packed, loc);
}
*/
}

View file

@ -17,6 +17,7 @@ import dev.zontreck.otemod.enchantments.ModEnchantments;
import dev.zontreck.otemod.implementation.DeathMessages;
import dev.zontreck.otemod.implementation.InventoryBackup;
import dev.zontreck.otemod.implementation.Messages;
import dev.zontreck.otemod.items.tags.ItemStatType;
import dev.zontreck.otemod.registry.ModDimensions;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
@ -28,6 +29,7 @@ import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.SpawnEggItem;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.GameType;
import net.minecraftforge.common.ForgeSpawnEggItem;
@ -73,12 +75,11 @@ public class EventHandler {
}
// Calculate chance
double base_chance = ServerConfig.drops.playerHeadChance;
double base_chance = (ServerConfig.drops.playerHeadChance * 100);
base_chance += looting;
base_chance *= 100;
Random rng = new Random();
double num = rng.nextDouble(0,100000);
int num = rng.nextInt(100) + 1;
if(num <= base_chance)
{
ItemStack head = HeadUtilities.get(profile.username, "").setHoverName(ChatHelpers.macro(profile.nickname+"'s Head"));
@ -160,9 +161,13 @@ public class EventHandler {
// Check enchantment level for looting
int level = ItemUtils.getEnchantmentLevel (Enchantments.MOB_LOOTING,stack);
if(level==3){
ItemStack egg = new ItemStack(ForgeSpawnEggItem.fromEntityType(killed.getType()));
ItemStack egg = new ItemStack(
ForgeSpawnEggItem.fromEntityType(killed.getType())
);
ev.getDrops().add(new ItemEntity(killed.level(), killed.getX(), killed.getY(), killed.getZ(), egg));
//LoreHandlers.updateItem(stack, ItemStatType.EGGING);
LoreHandlers.updateItem(stack, ItemStatType.EGGING);
}
}else{
bias += 1;

View file

@ -3,7 +3,11 @@ package dev.zontreck.otemod.events;
import dev.zontreck.libzontreck.lore.LoreContainer;
import dev.zontreck.libzontreck.lore.LoreEntry;
import dev.zontreck.libzontreck.util.ChatHelpers;
import dev.zontreck.libzontreck.util.ItemUtils;
import dev.zontreck.otemod.OTEMod;
import dev.zontreck.otemod.configs.snbt.ServerConfig;
import dev.zontreck.otemod.enchantments.MobEggEnchantment;
import dev.zontreck.otemod.enchantments.ModEnchantments;
import dev.zontreck.otemod.items.tags.ItemStatTag;
import dev.zontreck.otemod.items.tags.ItemStatType;
import dev.zontreck.otemod.items.tags.ItemStatistics;
@ -75,7 +79,7 @@ public class LoreHandlers {
{
if(bs.is(Blocks.DIRT) || bs.is(Blocks.GRASS_BLOCK))
{
OTEMod.LOGGER.info("DIRT!");
//OTEMod.LOGGER.info("DIRT!");
updateItem(itemUsed, ItemStatType.HOE);
}
} else if(sName.contains("shovel"))
@ -98,7 +102,7 @@ public class LoreHandlers {
{
// Check the entity right-clicked, and the item in hand
OTEMod.LOGGER.info("Success");
//OTEMod.LOGGER.info("Success");
ServerPlayer sp = (ServerPlayer)ev.getEntity();
ItemStack itemUsed = sp.getMainHandItem();
Entity target = ev.getTarget();
@ -149,6 +153,10 @@ public class LoreHandlers {
}
if(ItemUtils.getEnchantmentLevel(ModEnchantments.MOB_EGGING_ENCHANTMENT.get(), weaponUsed) > 0) {
updateItem(weaponUsed, ItemStatType.EGG_CHANCE);
}
}
// Only valid to be used by OTEMod
@ -159,31 +167,59 @@ public class LoreHandlers {
// Update the mob kill count
CompoundTag props = weaponUsed.getTag();
if(props==null)props=new CompoundTag();
CompoundTag container = props.getCompound(ItemStatTag.STATS_TAG+"_"+type.name().toLowerCase());
if(props==null){
props=new CompoundTag();
weaponUsed.setTag(props);
}
String tagName = ItemStatTag.STATS_TAG + "_" + type.name().toLowerCase();
CompoundTag container = new CompoundTag();
if(!props.contains(tagName))
{
props.put(tagName, container);
}else container = props.getCompound(ItemStatTag.STATS_TAG+"_"+type.name().toLowerCase());
LoreContainer contain = new LoreContainer(weaponUsed);
ItemStatTag isTag;
try{
isTag = new ItemStatTag(type, container.getInt(ItemStatTag.STATS_TAG+"_"+type.name().toLowerCase()));
isTag = new ItemStatTag(type, (container.contains("pos") ? container.getInt("pos") : contain.miscData.loreData.size()), container.getInt("value"));
}catch (Exception e){
isTag = new ItemStatTag(type, 0);
isTag = new ItemStatTag(type, contain.miscData.loreData.size(), 0);
}
isTag.increment();
if(type == ItemStatType.EGG_CHANCE)
{
int bias = weaponUsed.getTag().getInt(MobEggEnchantment.TAG_BIAS);
int level = ItemUtils.getEnchantmentLevel(ModEnchantments.MOB_EGGING_ENCHANTMENT.get(), weaponUsed);
double percent = ((ServerConfig.drops.mobEggingChance) + (level + bias));
isTag.setValue((int)percent);
}else isTag.increment();
LoreEntry entry;
if(contain.miscData.loreData.size()==0)
{
// Missing entry
entry = new LoreEntry.Builder().text(ItemStatistics.makeText(isTag)).build();
contain.miscData.loreData.add(entry);
}else {
entry = contain.miscData.loreData.get(0); // Stat is set at 0
entry.text = ItemStatistics.makeText(isTag);
if(contain.miscData.loreData.size() == isTag.tagPosition)
{
entry = new LoreEntry.Builder().text(ItemStatistics.makeText(isTag)).build();
contain.miscData.loreData.add(entry);
}else {
entry = contain.miscData.loreData.get(isTag.tagPosition); // Stat is set at 0
entry.text = ItemStatistics.makeText(isTag);
}
}
// Update item
contain.commitLore();
container.putInt("pos", isTag.tagPosition);
container.putInt("value", isTag.value);
weaponUsed.setTag(props);
}catch(Exception e)
{
e.printStackTrace();

View file

@ -1,10 +1,6 @@
package dev.zontreck.otemod.events;
import dev.zontreck.otemod.OTEMod;
import dev.zontreck.otemod.entities.ModEntityTypes;
import dev.zontreck.otemod.entities.monsters.PossumEntity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

View file

@ -1,44 +0,0 @@
package dev.zontreck.otemod.implementation;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.items.ItemStackHandler;
public class OutputItemStackHandler extends ItemStackHandler {
private final ItemStackHandler internalSlot;
public OutputItemStackHandler(ItemStackHandler hidden) {
super();
internalSlot = hidden;
}
@Override
public void setSize(int size) {
stacks = NonNullList.<ItemStack>withSize(size, ItemStack.EMPTY);
}
@Override
public void setStackInSlot(int slot, ItemStack stack) {
internalSlot.setStackInSlot(slot, stack);
}
@Override
public int getSlots() {
return internalSlot.getSlots();
}
@Override
public ItemStack getStackInSlot(int slot) {
return internalSlot.getStackInSlot(slot);
}
@Override
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) {
return stack;
}
@Override
public ItemStack extractItem(int slot, int amount, boolean simulate) {
return internalSlot.extractItem(slot, amount, simulate);
}
}

View file

@ -16,14 +16,10 @@ public class ModItems {
public static final RegistryObject<Item> IHAN_CRYSTAL = CreativeModeTabs.addToOTEModTab(ITEMS.register("ihan_crystal", () -> new IhanCrystal()));
public static final RegistryObject<Item> ETERNIUM_RAW_ORE = CreativeModeTabs.addToOTEModTab(ITEMS.register("eternium_ore", () -> new Item(new Item.Properties())));
public static final RegistryObject<Item> ETERNIUM_INGOT = CreativeModeTabs.addToOTEModTab(ITEMS.register("eternium_ingot", ()-> new SimpleFoiledItem(new Item.Properties())));
public static final RegistryObject<Item> MELTED_ENDER_PEARL = CreativeModeTabs.addToOTEModTab(ITEMS.register("melted_ender_pearl", () -> new SimpleFoiledItem(new Item.Properties().stacksTo(64))));
public static final RegistryObject<Item> SINGULARITY = CreativeModeTabs.addToOTEModTab(ITEMS.register("singularity", () -> new UnstableSingularity(new Item.Properties().stacksTo(1))));

View file

@ -5,12 +5,14 @@ import net.minecraft.nbt.CompoundTag;
public class ItemStatTag {
public static final String STATS_TAG = "stat";
public ItemStatType type;
public int tagPosition;
public int value;
public ItemStatTag(ItemStatType t, int tag)
public ItemStatTag(ItemStatType t, int tagPos, int tag)
{
type = t;
value = tag;
tagPosition = tagPos;
}
public void increment(){
@ -21,6 +23,11 @@ public class ItemStatTag {
value--;
}
public void setValue(int value)
{
this.value=value;
}
public void save(CompoundTag tag)
{
tag.putInt(STATS_TAG+"_"+type.name().toLowerCase(), value);

View file

@ -9,5 +9,6 @@ public enum ItemStatType {
SHOVELPATH,
HOE,
SHEARS,
EGGING
EGGING,
EGG_CHANCE
}

View file

@ -11,6 +11,7 @@ public class ItemStatistics {
public static String makeText(ItemStatType type, int val)
{
String lore = ChatColor.doColors("!White!");
String sAppend = "";
switch(type)
{
case SWORD -> {
@ -38,10 +39,14 @@ public class ItemStatistics {
lore += "Sheep Shaved: ";
}
case EGGING -> {
lore += "Mobs Egged: ";
lore += "Spawn Eggs Dropped: ";
}
case EGG_CHANCE -> {
lore += "Spawn Egg Chance: ";
sAppend = "!White!%";
}
}
lore += ChatColor.doColors("!Green!"+val);
lore += ChatColor.doColors("!Green!"+val + sAppend);
return lore;
}
}

View file

@ -1,9 +0,0 @@
{
"format_version": "1.8.0",
"animations": {
"animation.model.idle": {
"loop": true
}
},
"geckolib_format_version": 2
}

View file

@ -1,321 +0,0 @@
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.unknown",
"texture_width": 64,
"texture_height": 64,
"visible_bounds_width": 3,
"visible_bounds_height": 2.5,
"visible_bounds_offset": [0, 0.75, 0]
},
"bones": [
{
"name": "tail",
"pivot": [5, 1, 10],
"cubes": [
{
"origin": [-7, 5, 1],
"size": [2, 1, 2],
"uv": {
"north": {"uv": [42, 57], "uv_size": [5, 5]},
"east": {"uv": [28, 58], "uv_size": [5, 6]},
"south": {"uv": [20, 58], "uv_size": [6, 6]},
"west": {"uv": [13, 59], "uv_size": [5, 5]},
"up": {"uv": [6, 59], "uv_size": [7, 5]},
"down": {"uv": [0, 64], "uv_size": [6, -5]}
}
},
{
"origin": [-7, 4, 2],
"size": [2, 1, 1],
"uv": {
"north": {"uv": [31, 59], "uv_size": [5, 5]},
"east": {"uv": [25, 58], "uv_size": [4, 6]},
"south": {"uv": [19, 58], "uv_size": [6, 6]},
"west": {"uv": [13, 59], "uv_size": [5, 5]},
"up": {"uv": [6, 59], "uv_size": [7, 5]},
"down": {"uv": [0, 64], "uv_size": [6, -5]}
}
},
{
"origin": [-7, 2, -1],
"size": [1, 1, 2],
"uv": {
"north": {"uv": [59, 56], "uv_size": [4, 5]},
"east": {"uv": [22, 58], "uv_size": [5, 6]},
"south": {"uv": [16, 58], "uv_size": [5, 6]},
"west": {"uv": [11, 59], "uv_size": [5, 5]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-7, 1, -2],
"size": [2, 1, 2],
"uv": {
"north": {"uv": [36, 55], "uv_size": [5, 5]},
"east": {"uv": [27, 58], "uv_size": [5, 6]},
"south": {"uv": [20, 58], "uv_size": [6, 6]},
"west": {"uv": [13, 59], "uv_size": [6, 5]},
"up": {"uv": [6, 59], "uv_size": [7, 5]},
"down": {"uv": [0, 64], "uv_size": [6, -5]}
}
},
{
"origin": [-6, 2, -2],
"size": [1, 1, 2],
"uv": {
"north": {"uv": [36, 58], "uv_size": [4, 5]},
"east": {"uv": [24, 58], "uv_size": [5, 6]},
"south": {"uv": [19, 58], "uv_size": [5, 6]},
"west": {"uv": [11, 59], "uv_size": [6, 5]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-7, 1, -3],
"size": [2, 1, 1],
"uv": {
"north": {"uv": [32, 58], "uv_size": [5, 5]},
"east": {"uv": [25, 58], "uv_size": [4, 6]},
"south": {"uv": [18, 58], "uv_size": [6, 6]},
"west": {"uv": [13, 60], "uv_size": [4, 4]},
"up": {"uv": [6, 60], "uv_size": [7, 4]},
"down": {"uv": [0, 64], "uv_size": [6, -4]}
}
},
{
"origin": [-8, 3, 0],
"size": [1, 2, 2],
"uv": {
"north": {"uv": [48, 58], "uv_size": [4, 6]},
"east": {"uv": [25, 57], "uv_size": [5, 7]},
"south": {"uv": [18, 57], "uv_size": [5, 7]},
"west": {"uv": [11, 59], "uv_size": [5, 5]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-7, 3, 1],
"size": [1, 2, 1],
"uv": {
"north": {"uv": [30, 57], "uv_size": [4, 6]},
"east": {"uv": [23, 57], "uv_size": [4, 7]},
"south": {"uv": [17, 57], "uv_size": [5, 7]},
"west": {"uv": [11, 60], "uv_size": [4, 4]},
"up": {"uv": [5, 60], "uv_size": [6, 4]},
"down": {"uv": [0, 64], "uv_size": [5, -4]}
}
},
{
"origin": [-7, 3, -1],
"size": [2, 2, 2],
"uv": {
"north": {"uv": [34, 57], "uv_size": [5, 6]},
"east": {"uv": [26, 57], "uv_size": [5, 7]},
"south": {"uv": [19, 57], "uv_size": [6, 7]},
"west": {"uv": [13, 59], "uv_size": [5, 5]},
"up": {"uv": [6, 59], "uv_size": [7, 5]},
"down": {"uv": [0, 64], "uv_size": [6, -5]}
}
},
{
"origin": [-9, 2, -2],
"size": [2, 2, 2],
"uv": {
"north": {"uv": [33, 57], "uv_size": [5, 6]},
"east": {"uv": [25, 57], "uv_size": [5, 7]},
"south": {"uv": [18, 57], "uv_size": [6, 7]},
"west": {"uv": [12, 59], "uv_size": [5, 5]},
"up": {"uv": [6, 59], "uv_size": [7, 5]},
"down": {"uv": [0, 64], "uv_size": [6, -5]}
}
},
{
"origin": [-7, 2, -3],
"size": [1, 1, 2],
"uv": {
"north": {"uv": [29, 56], "uv_size": [4, 5]},
"east": {"uv": [21, 58], "uv_size": [5, 6]},
"south": {"uv": [13, 58], "uv_size": [5, 6]},
"west": {"uv": [3, 59], "uv_size": [5, 5]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-8, 1, -6],
"size": [1, 1, 2],
"uv": {
"north": {"uv": [34, 56], "uv_size": [4, 5]},
"east": {"uv": [25, 58], "uv_size": [5, 6]},
"south": {"uv": [19, 58], "uv_size": [5, 6]},
"west": {"uv": [12, 59], "uv_size": [5, 5]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-8, 1, -4],
"size": [1, 2, 2],
"uv": {
"north": {"uv": [42, 57], "uv_size": [4, 6]},
"east": {"uv": [24, 57], "uv_size": [5, 7]},
"south": {"uv": [17, 57], "uv_size": [5, 7]},
"west": {"uv": [11, 59], "uv_size": [5, 5]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-8, -2, -8],
"size": [1, 1, 2],
"uv": {
"north": {"uv": [48, 57], "uv_size": [4, 5]},
"east": {"uv": [24, 58], "uv_size": [5, 6]},
"south": {"uv": [16, 58], "uv_size": [5, 6]},
"west": {"uv": [10, 60], "uv_size": [5, 4]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-7, 0, -5],
"size": [2, 2, 2],
"uv": {
"north": {"uv": [46, 58], "uv_size": [5, 4]},
"east": {"uv": [30, 61], "uv_size": [5, 3]},
"south": {"uv": [23, 58], "uv_size": [6, 6]},
"west": {"uv": [15, 60], "uv_size": [5, 4]},
"up": {"uv": [6, 58], "uv_size": [7, 6]},
"down": {"uv": [0, 64], "uv_size": [6, -6]}
}
},
{
"origin": [-8, 0, -7],
"size": [2, 1, 2],
"uv": {
"north": {"uv": [42, 56], "uv_size": [5, 5]},
"east": {"uv": [26, 58], "uv_size": [5, 6]},
"south": {"uv": [19, 58], "uv_size": [6, 6]},
"west": {"uv": [13, 60], "uv_size": [5, 4]},
"up": {"uv": [6, 59], "uv_size": [7, 5]},
"down": {"uv": [0, 64], "uv_size": [6, -5]}
}
},
{
"origin": [-7, -1, -7],
"size": [1, 1, 2],
"uv": {
"north": {"uv": [54, 59], "uv_size": [4, 5]},
"east": {"uv": [23, 58], "uv_size": [5, 6]},
"south": {"uv": [17, 58], "uv_size": [5, 6]},
"west": {"uv": [10, 60], "uv_size": [5, 4]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-8, -1, -8],
"size": [1, 1, 2],
"uv": {
"north": {"uv": [54, 58], "uv_size": [4, 5]},
"east": {"uv": [21, 58], "uv_size": [5, 6]},
"south": {"uv": [15, 58], "uv_size": [5, 6]},
"west": {"uv": [9, 60], "uv_size": [5, 4]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
},
{
"origin": [-9, -2, -8],
"size": [1, 2, 2],
"uv": {
"north": {"uv": [26, 58], "uv_size": [4, 6]},
"east": {"uv": [31, 57], "uv_size": [5, 7]},
"south": {"uv": [17, 57], "uv_size": [5, 7]},
"west": {"uv": [12, 59], "uv_size": [5, 5]},
"up": {"uv": [5, 59], "uv_size": [6, 5]},
"down": {"uv": [0, 64], "uv_size": [5, -5]}
}
}
]
},
{
"name": "body",
"pivot": [0, 0, 0],
"cubes": [
{
"origin": [-4, 3, 6],
"size": [7, 4, 1],
"uv": {
"north": {"uv": [3, 6], "uv_size": [7, 4]},
"east": {"uv": [7, 0], "uv_size": [3, 7]},
"south": {"uv": [14, 0], "uv_size": [7, 4]},
"west": {"uv": [24, 0], "uv_size": [3, 10]},
"up": {"uv": [11, 6], "uv_size": [12, 4]},
"down": {"uv": [41, 4], "uv_size": [7, -4]}
}
},
{
"origin": [-5, 1.75, -2],
"size": [9, 6, 8],
"uv": {
"north": {"uv": [8, 8], "uv_size": [9, 6]},
"east": {"uv": [0, 8], "uv_size": [8, 6]},
"south": {"uv": [25, 8], "uv_size": [9, 6]},
"west": {"uv": [17, 8], "uv_size": [8, 6]},
"up": {"uv": [8, 0], "uv_size": [9, 8]},
"down": {"uv": [17, 8], "uv_size": [9, -8]}
}
},
{
"origin": [-4, 2, -3],
"size": [7, 4, 1],
"uv": {
"north": {"uv": [10, 0], "uv_size": [10, 8]},
"east": {"uv": [27, 4], "uv_size": [2, 11]},
"south": {"uv": [0, 0], "uv_size": [11, 3]},
"west": {"uv": [22, 2], "uv_size": [3, 8]},
"up": {"uv": [18, 0], "uv_size": [7, 2]},
"down": {"uv": [29, 2], "uv_size": [7, -2]}
}
}
]
},
{
"name": "feet",
"pivot": [0, 0, 0],
"cubes": [
{"origin": [-5, 1, -1.9], "size": [3, 1, 3], "uv": [0, 16]},
{"origin": [-5, 1, 3], "size": [3, 1, 3], "uv": [0, 16]},
{"origin": [1, 1, -1.9], "size": [3, 1, 3], "uv": [0, 16]},
{"origin": [1, 1, 3.1], "size": [3, 1, 3], "uv": [0, 16]}
]
},
{
"name": "head",
"pivot": [0, 0, 0],
"cubes": [
{"origin": [2, 7, -1], "size": [4, 5, 6], "uv": [44, 5]},
{"origin": [6, 7, 0], "size": [1, 3, 4], "uv": [54, 0]},
{"origin": [7, 8, 1], "size": [1, 1, 2], "uv": [42, 5]},
{"origin": [1, 8, 0], "size": [1, 3, 4], "uv": [33, 0]}
]
},
{
"name": "ears",
"pivot": [0, 0, 0],
"cubes": [
{"origin": [3, 11, -2], "size": [1, 2, 2], "uv": [13, 16]},
{"origin": [3, 11, 4], "size": [1, 2, 2], "uv": [12, 16]}
]
}
]
}
]
}

View file

@ -1,8 +1,8 @@
{
"key.otemod.open_vault": "Opens Vault 0",
"key.category.otemod": "Only The Essentials",
"key.category.otemod": "Thresholds",
"itemGroup.tabs.otemod": "OTEMod",
"itemGroup.tabs.otemod": "Thresholds",
"item.minecraft.splash_potion.effect.flight": "Splash Potion of Flight",
"item.minecraft.lingering_potion.effect.flight": "Lingering Potion of Flight",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB