Jump to content

djofox

Members
  • Posts

    12
  • Joined

  • Last visited

Everything posted by djofox

  1. So basically I want to give the player a regeneration effect when they're wearing an armour piece I made, but the onArmorTick will rapidly give the player regeneration, disabling the delay and maxing out their health almost instantly. I had this problem with the health boost effect so I made a custom potion effect for that, but the regeneration effect is harder to do. I'm wondering if I need to figure out how to create the custom regeneration effect, or if theres another bypass I can do. Heres the code I have for it (Only the iron crown and shulker crown I have difficulty with): @Override public void onArmorTick(ItemStack stack, World world, PlayerEntity player) { if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.LEATHER_CROWN.get()) && player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem().equals(Items.LEATHER_CHESTPLATE) && player.getItemStackFromSlot(EquipmentSlotType.LEGS).getItem().equals(Items.LEATHER_LEGGINGS) && player.getItemStackFromSlot(EquipmentSlotType.FEET).getItem().equals(Items.LEATHER_BOOTS)) { player.addPotionEffect(new EffectInstance(Effects.HASTE, 15, 1, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.LEATHER_CROWN.get())) { player.addPotionEffect(new EffectInstance(Effects.HASTE, 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.CHAINMAIL_CROWN.get()) && player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem().equals(Items.CHAINMAIL_CHESTPLATE) && player.getItemStackFromSlot(EquipmentSlotType.LEGS).getItem().equals(Items.CHAINMAIL_LEGGINGS) && player.getItemStackFromSlot(EquipmentSlotType.FEET).getItem().equals(Items.CHAINMAIL_BOOTS)) { player.addPotionEffect(new EffectInstance(Effects.RESISTANCE, 15, 1, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.CHAINMAIL_CROWN.get())) { player.addPotionEffect(new EffectInstance(Effects.RESISTANCE, 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.GOLD_CROWN.get()) && player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem().equals(Items.GOLDEN_CHESTPLATE) && player.getItemStackFromSlot(EquipmentSlotType.LEGS).getItem().equals(Items.GOLDEN_LEGGINGS) && player.getItemStackFromSlot(EquipmentSlotType.FEET).getItem().equals(Items.GOLDEN_BOOTS)) { player.addPotionEffect(new EffectInstance(PotionList.MORE_HEALTH_EFFECT.get(), 15, 1, false, false)); player.addPotionEffect(new EffectInstance(Effects.HERO_OF_THE_VILLAGE, 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.GOLD_CROWN.get())) { player.addPotionEffect(new EffectInstance(PotionList.MORE_HEALTH_EFFECT.get(), 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.IRON_CROWN.get()) && player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem().equals(Items.IRON_CHESTPLATE) && player.getItemStackFromSlot(EquipmentSlotType.LEGS).getItem().equals(Items.IRON_LEGGINGS) && player.getItemStackFromSlot(EquipmentSlotType.FEET).getItem().equals(Items.IRON_BOOTS)) { player.addPotionEffect(new EffectInstance(Effects.REGENERATION, 15, 0, false, false)); player.addPotionEffect(new EffectInstance(Effects.SPEED, 15, 1, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.IRON_CROWN.get())) { player.addPotionEffect(new EffectInstance(Effects.SPEED, 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem().equals(Items.DIAMOND_CHESTPLATE) && player.getItemStackFromSlot(EquipmentSlotType.LEGS).getItem().equals(Items.DIAMOND_LEGGINGS) && player.getItemStackFromSlot(EquipmentSlotType.FEET).getItem().equals(Items.DIAMOND_BOOTS) && player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.DIAMOND_CROWN.get())) { player.addPotionEffect(new EffectInstance(Effects.CONDUIT_POWER, 15, 0, false, false)); player.addPotionEffect(new EffectInstance(Effects.DOLPHINS_GRACE, 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.DIAMOND_CROWN.get())) { player.addPotionEffect(new EffectInstance(Effects.CONDUIT_POWER, 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem().equals(Items.NETHERITE_CHESTPLATE) && player.getItemStackFromSlot(EquipmentSlotType.LEGS).getItem().equals(Items.NETHERITE_LEGGINGS) && player.getItemStackFromSlot(EquipmentSlotType.FEET).getItem().equals(Items.NETHERITE_BOOTS) && player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.NETHERITE_CROWN.get())) { player.addPotionEffect(new EffectInstance(Effects.FIRE_RESISTANCE, 15, 0, false, false)); player.addPotionEffect(new EffectInstance(Effects.STRENGTH, 15, 0, false, false)); player.addPotionEffect(new EffectInstance(Effects.NIGHT_VISION, 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.NETHERITE_CROWN.get())) { player.addPotionEffect(new EffectInstance(Effects.FIRE_RESISTANCE, 15, 0, false, false)); } else if (player.getItemStackFromSlot(EquipmentSlotType.HEAD).getItem().equals(ItemInit.SHULKER_CROWN.get())) { player.addPotionEffect(new EffectInstance(Effects.REGENERATION, 15, 1, false, false)); player.addPotionEffect(new EffectInstance(Effects.LEVITATION, 15, 0, false, false)); } } }
  2. So basically I tried updating my 1.12.2 ore generation to 1.16.5, long story short theres a massive change. I finally got it without eclipse problems through looking at a couple githubs, but it doesnt work. I feel like im overlooking an obvious problem but I cant see it. If someone could help me out that'd be great. Heres my code for the ore gen. @Mod.EventBusSubscriber(modid = Main.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) public class ModOreGen { public static void generateOres(final BiomeLoadingEvent event) { if (!(event.getCategory().equals(Biome.Category.NETHER) || event.getCategory().equals(Biome.Category.THEEND))) { buildOreFeature(BlockInit.BERYLORE.get(), Blocks.GRASS, 10, 0, 100, 20); } } private static ConfiguredFeature<?, ?> buildOreFeature(Block ore, Block filler, int maxVeinSize, int minVeinLevel, int maxVeinLevel, int spawnRate) { ConfiguredFeature<?, ?> feature = Feature.ORE.configured(new OreFeatureConfig(new BlockMatchRuleTest(filler), ore.defaultBlockState(), maxVeinSize)); feature = minMaxRange(feature, minVeinLevel, maxVeinLevel).squared(); feature = feature.count(spawnRate); return feature; } private static IDecoratable<ConfiguredFeature<?,?>> minMaxRange(IDecoratable<ConfiguredFeature<?,?>> f, int min, int max) { return f.decorated(Placement.RANGE.configured(new TopSolidRangeConfig(min, min, max))); } } And heres where I call it public Main() { IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); bus.addListener(this::setup); ItemInit.ITEMS.register(bus); BlockInit.BLOCKS.register(bus); MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(FuelHandler.instance); PotionList.EFFECTS.register(bus); PotionList.POTIONS.register(bus); MinecraftForge.EVENT_BUS.addListener(EventPriority.HIGH, ModOreGen::generateOres); }
  3. Yes thank you it works now! I had noOcclusion before, but it didnt do anything. It was that I had to register the client side render. I think forge has one of their things broken though, .cutout() doesnt work nor does .cutoutMipped, but .translucent() does Heres my code to see if I just did something wrong private void setup(final FMLCommonSetupEvent event) { RenderTypeLookup.setRenderLayer(BlockInit.BERYLGLASS.get(), RenderType.cutout()); RenderTypeLookup.setRenderLayer(BlockInit.BERYLBLOCK.get(), RenderType.cutoutMipped()); RenderTypeLookup.setRenderLayer(BlockInit.TREATEDCARBIDEBLOCK.get(), RenderType.translucent()); } and when I do this only the treated carbide block will appear translucent. When i have them all translucent and I place them beside eachother they look pretty weird, so if theres a fix for this that'd be great.
  4. Still nothing public class ModGlassBlock extends GlassBlock{ public ModGlassBlock(AbstractBlock.Properties p_i48392_1_) { super(p_i48392_1_); } public boolean isOpaqueCube() { return false; } public boolean notSolid() { return true; } }
  5. So I made an extension off the default minecraft glass block and it doesnt become transparent. Im updating my mod from 1.12.2 to 1.16.5 so I'm not too sure how I can do the transparencys I have. One block I have it where the textures dont connect, and another block I have it like ice Heres the code (1.16) that doesnt make my glass block transparent. I'm tackling the easier issue first; the glass with connecting textures public static final RegistryObject<Block> BERYLGLASS = BLOCKS.register("beryl_glass", () -> new ModGlassBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.3F).sound(SoundType.GLASS).noOcclusion().harvestTool(ToolType.PICKAXE).harvestLevel(1))); And the glass block glass public class ModGlassBlock extends GlassBlock{ public ModGlassBlock(AbstractBlock.Properties p_i48392_1_) { super(p_i48392_1_); } } The transparent textures appear solid. If someone could help that'd be great!
  6. Yes! thank you, it works great now. One more thing though, I followed default minecraft code for the armor, but even though I have all my layers in assets/gemstones/textures/models/armor it still shows up on my character as the 'no-texture' texture.
  7. Sure, i played around with the code a bit and added a ".get()" to the end of the material, this removed all errors. Except its wrong because now I launch and the game crashes, yet eclipse gives me no errors. Heres my list: package djofox.gemstones.materials; import java.util.function.Supplier; import djofox.gemstones.init.ItemInit; import net.minecraft.item.IItemTier; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.LazyValue; public enum ToolMaterialList implements IItemTier { beryl(0, 131, 15.0f, 2.75f, 30, () -> { return Ingredient.of(ItemInit.beryl.get()); }), jade(2, 500, 7.0f, 2.25f, 23, () -> { return Ingredient.of(ItemInit.jade.get()); }), moissanite(2, 500, 7.0f, 2.25f, 23, () -> { return Ingredient.of(ItemInit.moissanite.get()); }), kunzite(0, 315, 12f, 0.5f, 20, () -> { return Ingredient.of(ItemInit.kunzite.get()); }), orpiment(2, 258, 10f, 0.5f, 20, () -> { return Ingredient.of(ItemInit.orpiment.get()); }), mercurySulfide(2, 1012, 5.5f, 2.0f, 14, () -> { return Ingredient.of(ItemInit.mercurySulfide.get()); }), blackDiamond(3, 2757, 8.0f, 3.0f, 2, () -> { return Ingredient.of(ItemInit.blackDiamond.get()); }), treatedCarbide(4, 2560, 10.0f, 5.0f, 2, () -> { return Ingredient.of(ItemInit.siliconCarbide.get()); }); private final int level; private final int uses; private final float speed; private final float damage; private final int enchantmentValue; private final LazyValue<Ingredient> repairIngredient; private ToolMaterialList(int p_i48458_3_, int p_i48458_4_, float p_i48458_5_, float p_i48458_6_, int p_i48458_7_, Supplier<Ingredient> p_i48458_8_) { this.level = p_i48458_3_; this.uses = p_i48458_4_; this.speed = p_i48458_5_; this.damage = p_i48458_6_; this.enchantmentValue = p_i48458_7_; this.repairIngredient = new LazyValue<>(p_i48458_8_); } public int getUses() { return this.uses; } public float getSpeed() { return this.speed; } public float getAttackDamageBonus() { return this.damage; } public int getLevel() { return this.level; } public int getEnchantmentValue() { return this.enchantmentValue; } public Ingredient getRepairIngredient() { return this.repairIngredient.get(); } } Heres my init class which causes the crash (from taking other stuff) And heres the error I get when I crash (I dont know if you need it but better safe than sorry)
  8. Ohh ok, that makes sense, but even still how could I fix it? I cant initialize my items before I do my ToolMaterialList because my items class uses it.
  9. So I already created an Armor class and Item Tier class for my new set of Mod tools and armor, but I can't figure out how to set the repair material as my Mod Item. The Item I would like to use is declared as a Registry Object because that's the new way forge does it, however "fromItems" takes IItemProvider and I'm not sure how to properly declare that, also I found another 'fix' that said use "get" but that doesnt work either Can someone help me figure this out please? My repair BERYLC("berylc", 40, new int[]{1, 2, 3, 1}, 1, SoundEvents.EXPERIENCE_ORB_PICKUP, 1.0F, 0.0F, () -> { return Ingredient.get(ItemInit.beryl); //This line gets the error My Item public static final RegistryObject<Item> beryl = ITEMS.register("beryl", () -> new Item(new Item.Properties().tab(Main.GEMSTONES_GROUP))); Thanks in advance!
  10. I keep on getting this error when trying to register tools "The method register(String, Supplier<? extends I>) in the type DeferredRegister<Item> is not applicable for the arguments (String, CustomPickaxeItem)" I cant find a fix without my game crashing, is there another way I should be trying to register tools/armour? //Armor & Tools public static final RegistryObject<Item> PICKAXERUBY = ITEMS.register("beryl_pickaxe", new CustomPickaxeItem(ToolMaterialList.berylT, -1, 0.6F, new Item.Properties().tab(Main.GEMSTONES_GROUP))); And here's my deferred registry code public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Main.MODID); Heres my custom pickaxe code package djofox.gemstones.items; import net.minecraft.item.IItemTier; import net.minecraft.item.PickaxeItem; public class CustomPickaxeItem extends PickaxeItem { public CustomPickaxeItem(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) { super(tier, attackDamageIn, attackSpeedIn, builder); } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.