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:
parent
7e1f4eea48
commit
afb21dd2c8
25 changed files with 121 additions and 558 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}*/
|
||||
}
|
|
@ -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");
|
||||
}*/
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
*/
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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))));
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -9,5 +9,6 @@ public enum ItemStatType {
|
|||
SHOVELPATH,
|
||||
HOE,
|
||||
SHEARS,
|
||||
EGGING
|
||||
EGGING,
|
||||
EGG_CHANCE
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"format_version": "1.8.0",
|
||||
"animations": {
|
||||
"animation.model.idle": {
|
||||
"loop": true
|
||||
}
|
||||
},
|
||||
"geckolib_format_version": 2
|
||||
}
|
|
@ -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]}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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 |
Reference in a new issue