Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

djofox

Members
  • Joined

  • Last visited

  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. Heres the full error
  9. 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.
  10. 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!
  11. 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); } }

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.