diff --git a/src/main/java/dev/symphony/harmony/config/HarmonyConfig.java b/src/main/java/dev/symphony/harmony/config/HarmonyConfig.java index eeccda6..8d69648 100644 --- a/src/main/java/dev/symphony/harmony/config/HarmonyConfig.java +++ b/src/main/java/dev/symphony/harmony/config/HarmonyConfig.java @@ -16,6 +16,8 @@ public class HarmonyConfig extends MidnightConfig { @Entry(category = TRANS) public static boolean horseArmorPreventsBucking = true; @Entry(category = TRANS) public static boolean enderPearlsTeleportVehicles = true; @Entry(category = TRANS) public static boolean enderPearlsDamageVehicles = true; + @Entry(category = TRANS) public static float furnaceMinecartSpeed = 1f; + @Entry(category = TRANS) public static float furnaceMinecartSpeedInWater = 1f; @Entry(category = TRANS, isSlider = true, min = 0f, max = 1f) public static float riptideAccelerationOnWater = 0.1f; @Entry(category = TRANS) public static boolean riptideCooldown = true; @Entry(category = TRANS) public static int riptideTimeMultiplier = 5; diff --git a/src/main/java/dev/symphony/harmony/mixin/transportation/minecarts/FurnaceMinecartEntityMixin.java b/src/main/java/dev/symphony/harmony/mixin/transportation/minecarts/FurnaceMinecartEntityMixin.java new file mode 100644 index 0000000..5738f23 --- /dev/null +++ b/src/main/java/dev/symphony/harmony/mixin/transportation/minecarts/FurnaceMinecartEntityMixin.java @@ -0,0 +1,63 @@ +package dev.symphony.harmony.mixin.transportation.minecarts; + +import dev.symphony.harmony.config.HarmonyConfig; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.vehicle.AbstractMinecartEntity; +import net.minecraft.entity.vehicle.FurnaceMinecartEntity; +import net.minecraft.item.FuelRegistry; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +/** + * FEATURE: Made Furnace Minecart speeds customizable. + * @author RandomVideos + */ +@Mixin(FurnaceMinecartEntity.class) +public class FurnaceMinecartEntityMixin extends AbstractMinecartEntity { + @Shadow private int fuel; + @Shadow public Vec3d pushVec; + + protected FurnaceMinecartEntityMixin(EntityType entityType, World world) {super(entityType, world);} + + @Inject(method = "getMaxSpeed",at= @At("RETURN"), cancellable = true) + void ChangeFurnaceMinecartSpeed(ServerWorld world, CallbackInfoReturnable cir){ + if(super.isTouchingWater()) + cir.setReturnValue(super.getMaxSpeed(world) * HarmonyConfig.furnaceMinecartSpeedInWater); + else + cir.setReturnValue(super.getMaxSpeed(world) * HarmonyConfig.furnaceMinecartSpeed); + } + + @Inject(method = "interact",at= @At(value = "HEAD"), cancellable = true) + void AllowMoreFuels(PlayerEntity player, Hand hand, CallbackInfoReturnable cir){ + ItemStack itemStack = player.getStackInHand(hand); + FuelRegistry fuelRegistry = player.getWorld().getFuelRegistry(); + if (fuelRegistry.isFuel(itemStack)) { + if(fuelRegistry.getFuelTicks(itemStack)*2.25f+fuel < 32000) { + itemStack.decrementUnlessCreative(1, player); + this.fuel += (int) (fuelRegistry.getFuelTicks(itemStack)*2.25f); + } + } + + if (this.fuel > 0) { + this.pushVec = this.getPos().subtract(player.getPos()).getHorizontal(); + } + + cir.setReturnValue(ActionResult.SUCCESS); + } + + @Override public ItemStack getPickBlockStack() {return new ItemStack(Items.FURNACE_MINECART);} + @Override public Item asItem() {return Items.FURNACE_MINECART;} + +} diff --git a/src/main/resources/assets/harmony/lang/en_us.json b/src/main/resources/assets/harmony/lang/en_us.json index 106810b..ee10eb8 100644 --- a/src/main/resources/assets/harmony/lang/en_us.json +++ b/src/main/resources/assets/harmony/lang/en_us.json @@ -7,19 +7,23 @@ "harmony.midnightconfig.category.transportation": "Transportation", "harmony.midnightconfig.liquidsDeactivateElytra": "Flying through liquids deactivates the Elytra", - "harmony.midnightconfig.liquidsDeactivateElytra.tooltip": "(Isn't affected by rain) \nWhen getting into the water, you will automatically get in swim mode", + "harmony.midnightconfig.liquidsDeactivateElytra.tooltip": "(Isn't affected by rain) \nWhen getting into the water, you will automatically get in swim mode", "harmony.midnightconfig.exitVehicleOnDamage": "Mobs exit vehicles when taking damage", "harmony.midnightconfig.saddleRecipe": "Craftable Saddle", "harmony.midnightconfig.horseArmorPreventsBucking": "Horse armor decreases bucking chance on damage", "harmony.midnightconfig.horseArmorPreventsBucking.tooltip": "Horse armor has a chance from preventing the horse from bucking, depending of material: \n \n-Leather: 45% \n-Gold: 60% \n-Iron: 75% \n-Diamond: 90% \n-Netherite (Melody Integration): 100% ", "harmony.midnightconfig.enderPearlsTeleportVehicles": "Ender Pearls teleport the entity the player is riding", "harmony.midnightconfig.enderPearlsDamageVehicles": "Ender Pearls damage mounts when teleporting", - "harmony.midnightconfig.enderPearlsDamageVehicles.tooltip": "All entities teleported(passengers and mounts) using an Ender Pearl receive half of the damage the player normally would", + "harmony.midnightconfig.enderPearlsDamageVehicles.tooltip": "All entities teleported (passengers and mounts) using an Ender Pearl receive half of the damage the player normally would", + "harmony.midnightconfig.furnaceMinecartSpeed": "Minecart with Furnace speed", + "harmony.midnightconfig.furnaceMinecartSpeed.tooltip": "The speed is relative to the max Minecart speed(2 being 200%, 0.5 being 50% etc.)\nThe vanilla value is 0.75", + "harmony.midnightconfig.furnaceMinecartSpeedInWater": "Minecart with Furnace speed in water", + "harmony.midnightconfig.furnaceMinecartSpeedInWater.tooltip": "The speed is relative to the max Minecart speed(2 being 200%, 0.5 being 50% etc.)\nThe vanilla value is 0.5", "harmony.midnightconfig.riptideAccelerationOnWater": "Riptide acceleration on water", "harmony.midnightconfig.riptideCooldown": "Tridents with riptide have cooldown", - "harmony.midnightconfig.riptideCooldown.tooltip": "Tridents with riptide cant be used until riptide animation has finished. \nThis prevents the player from accumulating acceleration when using the \"Riptide Acceleration on Water\" feature.", + "harmony.midnightconfig.riptideCooldown.tooltip": "Tridents with riptide cant be used until riptide animation has finished. \nThis prevents the player from accumulating acceleration when using the \"Riptide Acceleration on Water\" feature.", "harmony.midnightconfig.riptideTimeMultiplier": "Riptide effect time multiplier", - "harmony.midnightconfig.riptideTimeMultiplier.tooltip": "Increases the time for the riptide animation, during which you will gain acceleration as long as the \"Riptide Acceleration on water\" feature is enabled. \n\nThe time is calculated the following way: 15+level*multiplier \n\nSet it to 0 to disable the feature.", + "harmony.midnightconfig.riptideTimeMultiplier.tooltip": "Increases the time for the riptide animation, during which you will gain acceleration as long as the \"Riptide Acceleration on water\" feature is enabled. \n\nThe time is calculated the following way: 15+level*multiplier \n\nSet it to 0 to disable the feature.", "harmony.midnightconfig.reduceRiptideWaterDrag": "Reduce water drag while using a Trident with Riptide", "harmony.midnightconfig.category.food": "Food", diff --git a/src/main/resources/assets/harmony/lang/ro_ro.json b/src/main/resources/assets/harmony/lang/ro_ro.json index cbea4fd..562976b 100644 --- a/src/main/resources/assets/harmony/lang/ro_ro.json +++ b/src/main/resources/assets/harmony/lang/ro_ro.json @@ -6,10 +6,25 @@ "harmony.midnightconfig.category.harmony": "Harmony", "harmony.midnightconfig.category.transportation": "Transportare", + "harmony.midnightconfig.liquidsDeactivateElytra": "Zborul prin lichide dezactivează Elitre", + "harmony.midnightconfig.liquidsDeactivateElytra.tooltip": "(Nu este afectat de ploaie) \nCând intrați în apă, veți intra automat în modul de înot", "harmony.midnightconfig.exitVehicleOnDamage": "Creaturile ies din vehicule când sunt rănite", "harmony.midnightconfig.saddleRecipe": "Șa fabricabilă", "harmony.midnightconfig.horseArmorPreventsBucking": "Armura calului scade șansele de zdruncinare când este rănit", - "harmony.midnightconfig.horseArmorPreventsBucking.tooltip": "Armura calului are șansa de a împiedica calul să se zdruncine, în funcție de material: \n \n-Piele: 45% \n-Aur: 60% \n-Fier: 75% \n-Diamant: 90% \n-Netherit (Integrare cu Melody): 100%", + "harmony.midnightconfig.horseArmorPreventsBucking.tooltip": "Armura calului are șansa de a împiedica calul din zdruncinare, în funcție de material: \n \n-Piele: 45% \n-Aur: 60% \n-Fier: 75% \n-Diamant: 90% \n-Netherit (Integrare cu Melody): 100%", + "harmony.midnightconfig.enderPearlsTeleportVehicles": "Perlele de Ender teleportează entitatea călărită de jucător", + "harmony.midnightconfig.enderPearlsDamageVehicles": "Perlele de Ender rănește entitatea călărită după teleportare", + "harmony.midnightconfig.enderPearlsDamageVehicles.tooltip": "Toate entitățile teleportate (pasageri și vehicule) folosind o Perlă de Ender primesc jumătate din rănile pe care le-ar primi în mod normal jucătorul", + "harmony.midnightconfig.furnaceMinecartSpeed": "Viteza cuptorului în vagonet", + "harmony.midnightconfig.furnaceMinecartSpeed.tooltip": "Viteza este proporțională cu viteza maximă a vagonetului(2 fiind 200%, 0.5 fiind 50% etc.)\nValoarea obișnuită este 0.75", + "harmony.midnightconfig.furnaceMinecartSpeedInWater": "Viteza cuptorului în vagonet în apă", + "harmony.midnightconfig.furnaceMinecartSpeedInWater.tooltip": "Viteza este proporțională cu viteza maximă a vagonetului(2 fiind 200%, 0.5 fiind 50% etc.)\nValoarea obișnuită este 0.5", + "harmony.midnightconfig.riptideAccelerationOnWater": "Accelerația Contracurentului pe apă", + "harmony.midnightconfig.riptideCooldown": "Tridentele cu farmecul Contracurent au o durată de așteptare", + "harmony.midnightconfig.riptideCooldown.tooltip": "Tridentele cu farmecul Contracurent nu pot fi utilizate înainte de terminarea animației. \nAcest lucru împiedică jucătorul să acumuleze accelerație când folosește opțiunea \"Accelerația Contracurentului pe apă\"", + "harmony.midnightconfig.riptideTimeMultiplier": "Multiplicator de timp al efectului Contracurentului", + "harmony.midnightconfig.riptideTimeMultiplier.tooltip": "Crește timpul pentru animația Contracurentului, în timpul căreia veți obține accelerație cât timp opțiunea \"Accelerația Contracurentului pe apă\" este activată. \n\nTimpul este calculat în felul următor: 15+nivel*multiplicator \n\n\nSetați-l la 0 pentru a dezactiva opțiunea.", + "harmony.midnightconfig.reduceRiptideWaterDrag": "Reduceți rezistența la apă în timp ce utilizați un Trident cu farmecul Contracurent", "harmony.midnightconfig.category.food": "Mâncare", "harmony.midnightconfig.stewStackSize": "Dimensiunea grămezii de tocană/supă", @@ -29,6 +44,7 @@ "harmony.midnightconfig.beaconsAffectTamedMobs": "Efectele Farului se aplică și animalelor îmblânzite, cât și jucătorilor.", "harmony.midnightconfig.category.combat": "Luptă", + "harmony.midnightconfig.tridentsReturnFromVoid": "Tridentele cu loialitate revin din vid", "harmony.midnightconfig.changeItemDespawnTime": "Modificați timpul de dispariție a obiectelor aruncate în funcție de dificultate", "harmony.midnightconfig.itemDespawnTimeEasy": "Timpul de dispariție a obiectelor aruncate în dificultatea Ușoară/Pașnică.", "harmony.midnightconfig.itemDespawnTimeNormal": "Timpul de dispariție a obiectelor aruncate în dificultatea Normală.", diff --git a/src/main/resources/harmony.mixins.json b/src/main/resources/harmony.mixins.json index c22779d..156aaf1 100644 --- a/src/main/resources/harmony.mixins.json +++ b/src/main/resources/harmony.mixins.json @@ -24,6 +24,7 @@ "transportation.ExitVehicleOnDamage", "transportation.HorseArmorPreventsBucking", "transportation.EnderPearlsDontDismount", + "transportation.minecarts.FurnaceMinecartEntityMixin", "transportation.elytra.LivingEntityMixin", "transportation.riptide.LivingEntityMixin", "transportation.riptide.TridentItemMixin"