Now there is a StringTheory enchantment that will decrease the amount of fray you get from something, by 15 percent per enchanted armor piece.
This commit is contained in:
parent
68a8290296
commit
18f974e6c8
5 changed files with 47 additions and 10 deletions
|
@ -16,5 +16,9 @@ public class FrayedEnchantment extends Enchantment {
|
|||
public int getMaxLevel() {
|
||||
return 1;
|
||||
}
|
||||
@Override
|
||||
public boolean isCursed(){
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,21 +1,24 @@
|
|||
package org.dimdev.dimdoors.enchantment;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentTarget;
|
||||
import net.minecraft.entity.EquipmentSlot;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import org.dimdev.matrix.Registrar;
|
||||
import org.dimdev.matrix.RegistryEntry;
|
||||
|
||||
public class ModEnchants {
|
||||
public static Enchantment FRAYED_ENCHAMENT;
|
||||
public static Enchantment FRAYED_ENCHANTMENT;
|
||||
public static Enchantment STRING_THEORY_ENCHANTMENT;
|
||||
public static void init() {
|
||||
FRAYED_ENCHAMENT = Registry.register(
|
||||
FRAYED_ENCHANTMENT = Registry.register(
|
||||
Registry.ENCHANTMENT,
|
||||
new Identifier("dimdoors", "frayed"),
|
||||
new FrayedEnchantment(Enchantment.Rarity.VERY_RARE, EnchantmentTarget.BREAKABLE, new EquipmentSlot[] {EquipmentSlot.MAINHAND, EquipmentSlot.CHEST, EquipmentSlot.FEET, EquipmentSlot.HEAD, EquipmentSlot.LEGS})
|
||||
);
|
||||
STRING_THEORY_ENCHANTMENT = Registry.register(
|
||||
Registry.ENCHANTMENT,
|
||||
new Identifier("dimdoors", "string_theory"),
|
||||
new StringTheoryEnchantment(Enchantment.Rarity.UNCOMMON, EnchantmentTarget.WEARABLE, new EquipmentSlot[] {EquipmentSlot.FEET, EquipmentSlot.LEGS, EquipmentSlot.CHEST, EquipmentSlot.HEAD})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package org.dimdev.dimdoors.enchantment;
|
||||
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentTarget;
|
||||
import net.minecraft.entity.EquipmentSlot;
|
||||
|
||||
public class StringTheoryEnchantment extends Enchantment {
|
||||
public StringTheoryEnchantment(Rarity weight, EnchantmentTarget type, EquipmentSlot[] slotTypes) {
|
||||
super(weight, type, slotTypes);
|
||||
}
|
||||
@Override
|
||||
public int getMinPower(int level) {
|
||||
return 10000;
|
||||
}
|
||||
@Override
|
||||
public int getMaxLevel() {
|
||||
return 1;
|
||||
}
|
||||
public boolean isTreasure() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,10 +1,6 @@
|
|||
package org.dimdev.dimdoors.mixin;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.packet.s2c.play.InventoryS2CPacket;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import org.apache.logging.log4j.Level;
|
||||
import org.apache.logging.log4j.core.jmx.Server;
|
||||
import org.dimdev.dimdoors.DimensionalDoorsInitializer;
|
||||
import org.dimdev.dimdoors.criteria.ModCriteria;
|
||||
import org.dimdev.dimdoors.enchantment.ModEnchants;
|
||||
|
@ -80,7 +76,7 @@ public abstract class ServerPlayerEntityMixin extends PlayerEntityMixin {
|
|||
return;
|
||||
}
|
||||
ItemStack stack = player.getInventory().getStack(slot);
|
||||
stack.addEnchantment(ModEnchants.FRAYED_ENCHAMENT, 1);
|
||||
stack.addEnchantment(ModEnchants.FRAYED_ENCHANTMENT, 1);
|
||||
player.getInventory().setStack(slot, stack);
|
||||
((ExtendedServerPlayNetworkHandler) (Object) ((ServerPlayerEntity) (Object) this).networkHandler).getDimDoorsPacketHandler().sendPacket(new PlayerInventorySlotUpdateS2CPacket(slot, stack));
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ package org.dimdev.dimdoors.world.level.component;
|
|||
|
||||
import dev.onyxstudios.cca.api.v3.component.ComponentV3;
|
||||
import dev.onyxstudios.cca.api.v3.component.sync.AutoSyncedComponent;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.enchantment.Enchantments;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import org.dimdev.dimdoors.DimensionalDoorsComponents;
|
||||
import org.dimdev.dimdoors.DimensionalDoorsInitializer;
|
||||
|
@ -12,6 +14,10 @@ import net.minecraft.network.PacketByteBuf;
|
|||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import org.dimdev.dimdoors.block.ModBlocks;
|
||||
import org.dimdev.dimdoors.enchantment.ModEnchants;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
public class PlayerModifiersComponent implements ComponentV3, AutoSyncedComponent {
|
||||
private int fray = 0;
|
||||
|
@ -68,6 +74,11 @@ public class PlayerModifiersComponent implements ComponentV3, AutoSyncedComponen
|
|||
}
|
||||
|
||||
public static int incrementFray(PlayerEntity player, int amount) {
|
||||
for(int i = 0; i < player.getInventory().armor.size(); i++) {
|
||||
if(EnchantmentHelper.getLevel(ModEnchants.STRING_THEORY_ENCHANTMENT, player.getInventory().armor.get(i)) > 0) {
|
||||
amount *= 0.85;
|
||||
}
|
||||
}
|
||||
int v = get(player).incrementFray(amount);
|
||||
PlayerModifiersComponent.sync(player);
|
||||
if(getFray(player) == DimensionalDoorsInitializer.getConfig().getPlayerConfig().fray.maxFray) {
|
||||
|
|
Loading…
Reference in a new issue