Skip to content

Commit

Permalink
Merge pull request #60 from RandmlyCoding/CustomizableFurnaceMinecart…
Browse files Browse the repository at this point in the history
…sSpeed

Made the minecart with furnace speed customizable
  • Loading branch information
TrigamDev authored Jan 17, 2025
2 parents 4e06531 + 1037473 commit 667fd8d
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 5 deletions.
2 changes: 2 additions & 0 deletions src/main/java/dev/symphony/harmony/config/HarmonyConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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<Double> 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<ActionResult> 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;}

}
12 changes: 8 additions & 4 deletions src/main/resources/assets/harmony/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
18 changes: 17 additions & 1 deletion src/main/resources/assets/harmony/lang/ro_ro.json
Original file line number Diff line number Diff line change
Expand Up @@ -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ă",
Expand All @@ -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ă.",
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/harmony.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"transportation.ExitVehicleOnDamage",
"transportation.HorseArmorPreventsBucking",
"transportation.EnderPearlsDontDismount",
"transportation.minecarts.FurnaceMinecartEntityMixin",
"transportation.elytra.LivingEntityMixin",
"transportation.riptide.LivingEntityMixin",
"transportation.riptide.TridentItemMixin"
Expand Down

0 comments on commit 667fd8d

Please sign in to comment.