Skip to content

Commit 114db3d

Browse files
committed
Update 1.2.25
1 parent 7fc5ac6 commit 114db3d

File tree

50 files changed

+1420
-42
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1420
-42
lines changed

betacraft/src/main/java/FoxLoader.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class FoxLoader extends Wrapper {
1111
static {
1212
System.clearProperty("http.proxyHost");
1313
System.clearProperty("http.proxyPort");
14+
System.setProperty("foxloader.internal.betacraft-wrapper", "true");
1415
System.out.println("FoxLoader BetaCraft wrapper loaded!");
1516
}
1617

@@ -26,14 +27,20 @@ private static boolean checkAllowDiscordRpc(String mainFolder) {
2627

2728
public FoxLoader(String user, String ver_prefix, String version, String sessionid, String mainFolder, Integer height, Integer width, Boolean RPC, String launchMethod, String server, String mppass, String uuid, String USR, String VER, Image img, ArrayList<?> addons) {
2829
super(user, ver_prefix, version, sessionid, mainFolder, height, width,
29-
RPC && checkAllowDiscordRpc(mainFolder),
30+
RPC == Boolean.TRUE && checkAllowDiscordRpc(mainFolder),
3031
launchMethod, server, mppass, uuid, USR, VER, img, addons);
32+
try {
33+
this.ogaddons.clear();
34+
} catch (Throwable ignored) {}
3135
}
3236

3337
public FoxLoader(String user, String ver_prefix, String version, String sessionid, String mainFolder, Integer height, Integer width, Boolean RPC, String launchMethod, String server, String mppass, String USR, String VER, Image img, ArrayList<?> addons) {
3438
super(user, ver_prefix, version, sessionid, mainFolder, height, width,
35-
RPC && checkAllowDiscordRpc(mainFolder),
39+
RPC == Boolean.TRUE && checkAllowDiscordRpc(mainFolder),
3640
launchMethod, server, mppass, USR, VER, img, addons);
41+
try {
42+
this.ogaddons.clear();
43+
} catch (Throwable ignored) {}
3744
}
3845

3946
@Override
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package org.betacraft;
2+
3+
public abstract class Addon {
4+
}

betacraft/src/main/java/org/betacraft/Wrapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class Wrapper extends Applet {
1414
public String mainFolder;
1515
public URLClassLoader classLoader;
1616
public boolean discord = false;
17+
public ArrayList<Class<Addon>> ogaddons = new ArrayList<>();
1718

1819
public Wrapper(String user, String ver_prefix, String version, String sessionid,
1920
String mainFolder, Integer height, Integer width, Boolean RPC, String launchMethod, String server,

client/src/main/java/com/fox2code/foxloader/client/mixins/MixinEntityClientPlayerMP.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,14 @@ public void sendNetworkData(ModContainer modContainer, byte[] data) {
4242

4343
@Override
4444
public void displayChatMessage(String chatMessage) {
45-
Minecraft.getInstance().ingameGUI.addChatMessage(chatMessage);
45+
if (chatMessage.indexOf('\n') == -1) {
46+
Minecraft.getInstance().ingameGUI.addChatMessage(chatMessage);
47+
} else {
48+
String[] splits = chatMessage.split("\\n");
49+
for (String split : splits) {
50+
Minecraft.getInstance().ingameGUI.addChatMessage(split);
51+
}
52+
}
4653
}
4754

4855
@Override
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.fox2code.foxloader.client.mixins;
2+
3+
import com.fox2code.foxloader.loader.ModLoader;
4+
import com.fox2code.foxloader.network.NetworkPlayer;
5+
import com.fox2code.foxloader.registry.RegisteredEntity;
6+
import net.minecraft.src.game.entity.Entity;
7+
import net.minecraft.src.game.entity.player.EntityPlayer;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12+
13+
@Mixin(EntityPlayer.class)
14+
public class MixinEntityPlayer {
15+
@Inject(method = "useCurrentItemOnEntity", at = @At("HEAD"), cancellable = true)
16+
public void onUseCurrentItemOnEntity(Entity var1, CallbackInfo ci) {
17+
if (!(this instanceof NetworkPlayer)) return;
18+
NetworkPlayer networkPlayer = (NetworkPlayer) this;
19+
if (ModLoader.Internal.notifyPlayerUseItemOnEntity(networkPlayer,
20+
networkPlayer.getRegisteredHeldItem(), (RegisteredEntity) var1)) {
21+
ci.cancel();
22+
}
23+
}
24+
25+
@Inject(method = "attackTargetEntityWithCurrentItem", at = @At("HEAD"), cancellable = true)
26+
public void onAttackTargetEntityWithCurrentItem(Entity var1, CallbackInfo ci) {
27+
if (!(this instanceof NetworkPlayer)) return;
28+
NetworkPlayer networkPlayer = (NetworkPlayer) this;
29+
if (ModLoader.Internal.notifyPlayerAttackEntity(networkPlayer,
30+
networkPlayer.getRegisteredHeldItem(), (RegisteredEntity) var1)) {
31+
ci.cancel();
32+
}
33+
}
34+
}

client/src/main/java/com/fox2code/foxloader/client/mixins/MixinEntityPlayerSP.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.fox2code.foxloader.client.mixins;
22

3+
import com.fox2code.foxloader.loader.ClientMod;
34
import com.fox2code.foxloader.loader.ModContainer;
45
import com.fox2code.foxloader.network.NetworkPlayer;
6+
import com.fox2code.foxloader.registry.RegisteredItemStack;
57
import net.minecraft.client.Minecraft;
68
import net.minecraft.src.client.player.EntityPlayerSP;
79
import net.minecraft.src.game.entity.Entity;
@@ -21,7 +23,14 @@ public void sendNetworkData(ModContainer modContainer, byte[] data) {}
2123

2224
@Override
2325
public void displayChatMessage(String chatMessage) {
24-
Minecraft.getInstance().ingameGUI.addChatMessage(chatMessage);
26+
if (chatMessage.indexOf('\n') == -1) {
27+
Minecraft.getInstance().ingameGUI.addChatMessage(chatMessage);
28+
} else {
29+
String[] splits = chatMessage.split("\\n");
30+
for (String split : splits) {
31+
Minecraft.getInstance().ingameGUI.addChatMessage(split);
32+
}
33+
}
2534
}
2635

2736
@Override
@@ -54,4 +63,10 @@ public boolean isConnected() {
5463
final Minecraft mc = Minecraft.getInstance();
5564
return mc.theWorld != null && !mc.isMultiplayerWorld();
5665
}
66+
67+
@Override
68+
public RegisteredItemStack getRegisteredHeldItem() {
69+
EntityPlayerSP networkPlayerSP = (EntityPlayerSP) (Object) this;
70+
return ClientMod.toRegisteredItemStack(networkPlayerSP.inventory.getCurrentItem());
71+
}
5772
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.fox2code.foxloader.client.mixins;
2+
3+
import com.fox2code.foxloader.client.renderer.TextureDynamic;
4+
import net.minecraft.src.client.renderer.ItemRenderer;
5+
import net.minecraft.src.game.item.ItemStack;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Shadow;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12+
13+
@Mixin(ItemRenderer.class)
14+
public class MixinItemRenderer {
15+
@Shadow private ItemStack itemToRender;
16+
17+
@ModifyVariable(method = "renderItem", at = @At("HEAD"), index = 2, argsOnly = true)
18+
public ItemStack modifyArgIndex2(ItemStack value) {
19+
return TextureDynamic.Hooks.toRenderItemStack(value);
20+
}
21+
22+
@ModifyVariable(method = "renderItemAtCoords", at = @At("HEAD"), index = 4, argsOnly = true)
23+
public ItemStack modifyArgIndex4(ItemStack value) {
24+
return TextureDynamic.Hooks.toRenderItemStack(value);
25+
}
26+
27+
@Inject(method = "updateEquippedItem", at = @At("RETURN"))
28+
public void updateEquippedItemHook(CallbackInfo ci) {
29+
this.itemToRender = TextureDynamic.Hooks.toRenderItemStack(this.itemToRender);
30+
}
31+
}

client/src/main/java/com/fox2code/foxloader/client/mixins/MixinItemStack.java

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.fox2code.foxloader.client.mixins;
22

33
import com.fox2code.foxloader.client.network.NetworkItemStack;
4+
import com.fox2code.foxloader.client.renderer.TextureDynamic;
5+
import com.fox2code.foxloader.loader.ClientMod;
46
import com.fox2code.foxloader.registry.GameRegistryClient;
57
import com.fox2code.foxloader.registry.RegisteredItem;
68
import com.fox2code.foxloader.registry.RegisteredItemStack;
@@ -16,17 +18,21 @@
1618
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1719

1820
@Mixin(ItemStack.class)
19-
public abstract class MixinItemStack implements RegisteredItemStack, NetworkItemStack {
21+
public abstract class MixinItemStack implements RegisteredItemStack,
22+
NetworkItemStack, TextureDynamic.Hooks.TexCacheItemStackRender {
2023
@Shadow public int itemID;
2124
@Shadow public int stackSize;
2225
@Shadow public int itemDamage;
2326
@Unique private int networkId;
27+
@Unique private ItemStack renderCache;
2428

2529
@Shadow public abstract Item getItem();
2630
@Shadow public abstract String getDisplayName();
2731
@Shadow public abstract void setItemName(String par1Str);
2832
@Shadow public abstract boolean hasDisplayName();
2933

34+
@Shadow public NBTTagCompound nbtTagCompound;
35+
3036
@Inject(method = "<init>(II)V", at = @At("RETURN"))
3137
public void onNewItemStack(int id, int count, CallbackInfo ci) {
3238
this.verifyRegisteredItemStack();
@@ -45,6 +51,7 @@ public void onNewItemStack(int id, int count, int damage, NBTTagCompound tagComp
4551
@Inject(method = "readFromNBT", at = @At("RETURN"))
4652
public void onReadFromNBT(NBTTagCompound nbtTagCompound, CallbackInfo ci) {
4753
this.verifyRegisteredItemStack();
54+
this.renderCache = null;
4855
}
4956

5057
@Inject(method = "splitStack", at = @At("RETURN"))
@@ -92,6 +99,28 @@ public void setRegisteredDisplayName(String displayName) {
9299
this.setItemName(displayName);
93100
}
94101

102+
@Override
103+
public int getRegisteredDynamicTextureId() {
104+
NBTTagCompound nbtTagCompound = this.nbtTagCompound;
105+
return nbtTagCompound == null || // Avoid NPEs here
106+
!nbtTagCompound.hasKey("DynamicTextureId") ? -1 :
107+
nbtTagCompound.getByte("DynamicTextureId");
108+
}
109+
110+
@Override
111+
public void setRegisteredDynamicTextureId(int dynamicTextureSlot) {
112+
NBTTagCompound nbtTagCompound = this.nbtTagCompound;
113+
if (dynamicTextureSlot == -1) {
114+
if (nbtTagCompound != null)
115+
nbtTagCompound.removeTag("DynamicTextureId");
116+
return;
117+
}
118+
if (nbtTagCompound == null) {
119+
this.nbtTagCompound = nbtTagCompound = new NBTTagCompound();
120+
}
121+
nbtTagCompound.setByte("DynamicTextureId", (byte) dynamicTextureSlot);
122+
}
123+
95124
@Override
96125
public int getRemoteItemId() {
97126
int networkId = this.networkId;
@@ -106,10 +135,21 @@ public void setRemoteNetworkId(int networkId) {
106135
}
107136

108137
@Override
109-
public void verifyRegisteredItemStack() {
110-
if (this.itemID != 0 && this.stackSize <= 0 && false) {
111-
this.itemDamage = 0;
112-
this.itemID = 0;
138+
public void verifyRegisteredItemStack() {}
139+
140+
@Override
141+
public ItemStack getRenderItemCache(Item item) {
142+
if (this.networkId == -1)
143+
return ClientMod.toItemStack(this);
144+
if (this.renderCache == null) {
145+
ItemStack cache = new ItemStack(item, this.stackSize, this.itemDamage, this.nbtTagCompound);
146+
((NetworkItemStack) (Object) cache).setRemoteNetworkId(-1);
147+
return this.renderCache = cache;
113148
}
149+
this.renderCache.itemID = item.itemID;
150+
this.renderCache.stackSize = this.stackSize;
151+
this.renderCache.itemDamage = this.itemDamage;
152+
this.renderCache.nbtTagCompound = this.nbtTagCompound;
153+
return this.renderCache;
114154
}
115155
}

client/src/main/java/com/fox2code/foxloader/client/mixins/MixinMinecraft.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.fox2code.foxloader.client.mixins;
22

3+
import com.fox2code.foxloader.client.renderer.TextureDynamic;
34
import com.fox2code.foxloader.launcher.FoxLauncher;
45
import com.fox2code.foxloader.loader.ClientModLoader;
56
import com.fox2code.foxloader.loader.ModLoader;
7+
import com.fox2code.foxloader.loader.packet.ServerDynamicTexture;
68
import com.fox2code.foxloader.network.NetworkPlayer;
79
import net.minecraft.client.Minecraft;
810
import net.minecraft.src.client.GameSettings;
911
import net.minecraft.src.game.entity.player.EntityPlayer;
1012
import net.minecraft.src.game.level.World;
13+
import net.minecraft.src.game.level.WorldSettings;
1114
import org.lwjgl.input.Keyboard;
1215
import org.spongepowered.asm.mixin.Mixin;
1316
import org.spongepowered.asm.mixin.Shadow;
@@ -20,15 +23,18 @@
2023
import javax.imageio.ImageIO;
2124
import java.awt.*;
2225
import java.io.File;
26+
import java.io.IOException;
2327
import java.util.Collections;
2428
import java.util.List;
2529
import java.util.Objects;
30+
import java.util.logging.Level;
2631

2732
@Mixin(Minecraft.class)
2833
public class MixinMinecraft {
2934
@Shadow public volatile boolean running;
3035
@Shadow public GameSettings gameSettings;
3136
@Shadow private static File minecraftDir;
37+
@Shadow public File mcDataDir;
3238
@Unique private NetworkPlayer.ConnectionType loadedWorldType;
3339
@Unique private boolean closeGameDelayed;
3440
@Unique private boolean showDebugInfoPrevious;
@@ -105,4 +111,20 @@ public void onRunTickEnd(CallbackInfo ci) {
105111
this.running = false;
106112
}
107113
}
114+
115+
@Inject(method = "startWorld", at = @At("RETURN"))
116+
public void onStartWorldHook(String var1, String var2, WorldSettings worldInfo, CallbackInfo ci) {
117+
try {
118+
int loadedTextures = 0;
119+
for (ServerDynamicTexture serverDynamicTexture : ServerDynamicTexture.readFromWorld(
120+
new File(new File(this.mcDataDir, "saves_ReIndev"), var1))) {
121+
TextureDynamic.Hooks.getServerDynTex(serverDynamicTexture.slot)
122+
.setRenderingData(serverDynamicTexture.texture);
123+
loadedTextures++;
124+
}
125+
ModLoader.getModLoaderLogger().info("Loaded " + loadedTextures + " dynamic textures!");
126+
} catch (IOException e) {
127+
ModLoader.getModLoaderLogger().log(Level.WARNING, "Failed to load dynamic textures!", e);
128+
}
129+
}
108130
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.fox2code.foxloader.client.mixins;
2+
3+
import com.fox2code.foxloader.client.renderer.TextureDynamic;
4+
import net.minecraft.src.client.renderer.Tessellator;
5+
import net.minecraft.src.client.renderer.block.icon.Icon;
6+
import net.minecraft.src.client.renderer.entity.RenderItem;
7+
import net.minecraft.src.game.entity.other.EntityItem;
8+
import net.minecraft.src.game.item.ItemStack;
9+
import org.spongepowered.asm.mixin.Mixin;
10+
import org.spongepowered.asm.mixin.Overwrite;
11+
import org.spongepowered.asm.mixin.Shadow;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
14+
import org.spongepowered.asm.mixin.injection.Redirect;
15+
16+
@Mixin(RenderItem.class)
17+
public class MixinRenderItem {
18+
@Shadow public float zLevel;
19+
20+
@ModifyVariable(method = "renderItemEntity", at = @At("HEAD"), index = 2, argsOnly = true)
21+
public ItemStack modifyArgIndex2(ItemStack value) {
22+
return TextureDynamic.Hooks.toRenderItemStack(value);
23+
}
24+
25+
@Redirect(method = "doRenderItem", at = @At(value = "FIELD", target =
26+
"Lnet/minecraft/src/game/entity/other/EntityItem;item:Lnet/minecraft/src/game/item/ItemStack;", ordinal = 0))
27+
public ItemStack doRenderItemHookRedirect(EntityItem instance) {
28+
return TextureDynamic.Hooks.toRenderItemStack(instance.item);
29+
}
30+
31+
@ModifyVariable(method = "renderItemIntoGUI", at = @At("HEAD"), index = 3, argsOnly = true)
32+
public ItemStack modifyArgIndex3(ItemStack value) {
33+
return TextureDynamic.Hooks.toRenderItemStack(value);
34+
}
35+
}

0 commit comments

Comments
 (0)