missing tools and motd fixed

This commit is contained in:
gnembon committed 2019-07-06 02:22:00 -03:00
1 parent bb555386d0
commit 76334f9a68
10 files changed
+106 -66

No files matched your search

@@ -14,9 +14,10 @@ public class MinecraftDedicatedServerMixin
// this.tickWorlds(booleanSupplier_1);
@Inject(method = "setupServer", at = @At("TAIL"))
private void onSetupServer(CallbackInfoReturnable<Boolean> cir) {
//CM init - all stuff loaded from the server, just before worlds loading
CarpetServer.onServerLoaded((MinecraftDedicatedServer) (Object) this);
//CM start game hook
CarpetServer.onGameStarted();
//CM init - all stuff loaded from the server, just before worlds loading
CarpetServer.onServerLoaded((MinecraftDedicatedServer) (Object) this);
}
}
@@ -1,41 +0,0 @@
package carpet.mixins;
import carpet.settings.CarpetSettings;
import carpet.fakes.MinecraftServer_motdInterface;
import net.minecraft.server.MinecraftServer;
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.Redirect;
@Mixin(MinecraftServer.class)
public abstract class MinecraftServer_motdMixin implements MinecraftServer_motdInterface
{
@Shadow private String motd;
@Shadow public abstract void setMotd(String string_1);
@Redirect(method = "run", at = @At(
value = "FIELD",
target = "Lnet/minecraft/server/MinecraftServer;motd:Ljava/lang/String;")
)
private String setCustomMotd(MinecraftServer server)
{
return checkMOTD();
}
@Override
public String checkMOTD()
{
if ("_".equals(CarpetSettings.customMOTD))
{
setMotd(motd);
return motd;
}
else
{
setMotd(CarpetSettings.customMOTD);
return CarpetSettings.customMOTD;
}
}
}
@@ -0,0 +1,25 @@
package carpet.mixins;
import carpet.settings.CarpetSettings;
import net.minecraft.block.BlockState;
import net.minecraft.block.Material;
import net.minecraft.item.PickaxeItem;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(PickaxeItem.class)
public class PickaxeItem_missingToolsMixin
{
@Redirect(method = "getMiningSpeed", at = @At(
value = "INVOKE",
target = "Lnet/minecraft/block/BlockState;getMaterial()Lnet/minecraft/block/Material;"
))
private Material getCustomMaterial(BlockState blockState)
{
Material material = blockState.getMaterial();
if (CarpetSettings.missingTools && (material == Material.PISTON || material == Material.GLASS))
material = Material.STONE;
return material;
}
}
@@ -0,0 +1,24 @@
package carpet.mixins;
import carpet.settings.CarpetSettings;
import net.minecraft.server.ServerMetadata;
import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ServerMetadata.class)
public class ServerMetadata_motdMixin
{
@Inject(method = "getDescription", at = @At("HEAD"), cancellable = true)
private void getDescriptionAlternative(CallbackInfoReturnable<Text> cir)
{
if (!CarpetSettings.customMOTD.equals("_"))
{
cir.setReturnValue(new LiteralText(CarpetSettings.customMOTD));
cir.cancel();
}
}
}
@@ -0,0 +1,26 @@
package carpet.mixins;
import carpet.settings.CarpetSettings;
import net.minecraft.block.BlockState;
import net.minecraft.block.Material;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ShearsItem;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ShearsItem.class)
public class ShearsItem_missingToolsMixin
{
@Inject(method = "getMiningSpeed", at = @At("HEAD"), cancellable = true)
private void getCustomMaterial(ItemStack itemStack_1, BlockState blockState_1, CallbackInfoReturnable<Float> cir)
{
if (CarpetSettings.missingTools && (blockState_1.getMaterial() == Material.SPONGE))
{
cir.setReturnValue(15.0F);
cir.cancel();
}
}
}
@@ -5,17 +5,22 @@ import carpet.fakes.WorldInterface;
import carpet.utils.SpawnReporter;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityCategory;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.mob.MobEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.util.shape.VoxelShapes;
import net.minecraft.world.SpawnHelper;
import net.minecraft.world.World;
import net.minecraft.world.chunk.WorldChunk;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Map;
@@ -96,4 +101,17 @@ public class SpawnHelperMixin
return world.spawnEntity(entity_1);
return false;
}
@Redirect(method = "spawnEntitiesInChunk", at = @At(
value = "INVOKE",
target = "Lnet/minecraft/entity/player/PlayerEntity;squaredDistanceTo(DDD)D"
))
private static double getSqDistanceTo(PlayerEntity playerEntity, double double_1, double double_2, double double_3,
EntityCategory entityCategory_1, World world_1, WorldChunk worldChunk_1, BlockPos blockPos_1)
{
double distanceTo = playerEntity.squaredDistanceTo(double_1, double_2, double_3);
if (CarpetSettings.lagFreeSpawning && distanceTo > 16384.0D && entityCategory_1 != EntityCategory.CREATURE)
return 0.0;
return distanceTo;
}
}