From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../jp/plusplus/fbs/event/wish/ContainerWish.class | Bin 0 -> 527 bytes .../jp/plusplus/fbs/event/wish/ContainerWish.java | 17 +++ .../java/jp/plusplus/fbs/event/wish/GuiWish.class | Bin 0 -> 3693 bytes .../java/jp/plusplus/fbs/event/wish/GuiWish.java | 88 ++++++++++++ .../jp/plusplus/fbs/event/wish/WishHandler$1.class | Bin 0 -> 1221 bytes .../jp/plusplus/fbs/event/wish/WishHandler.class | Bin 0 -> 3501 bytes .../jp/plusplus/fbs/event/wish/WishHandler.java | 74 ++++++++++ .../plusplus/fbs/event/wish/entry/IWishEntry.class | Bin 0 -> 310 bytes .../plusplus/fbs/event/wish/entry/IWishEntry.java | 31 +++++ .../fbs/event/wish/entry/WishEntryDeath.class | Bin 0 -> 1699 bytes .../fbs/event/wish/entry/WishEntryDeath.java | 33 +++++ .../fbs/event/wish/entry/WishEntryExp.class | Bin 0 -> 1524 bytes .../fbs/event/wish/entry/WishEntryExp.java | 33 +++++ .../fbs/event/wish/entry/WishEntryGeneric.class | Bin 0 -> 5846 bytes .../fbs/event/wish/entry/WishEntryGeneric.java | 153 +++++++++++++++++++++ .../fbs/event/wish/entry/WishEntryHealth.class | Bin 0 -> 1671 bytes .../fbs/event/wish/entry/WishEntryHealth.java | 35 +++++ .../fbs/event/wish/entry/WishEntryMoney.class | Bin 0 -> 1657 bytes .../fbs/event/wish/entry/WishEntryMoney.java | 33 +++++ .../fbs/event/wish/entry/WishEntrySanity.class | Bin 0 -> 1629 bytes .../fbs/event/wish/entry/WishEntrySanity.java | 32 +++++ .../fbs/event/wish/entry/WishEntryText.class | Bin 0 -> 1696 bytes .../fbs/event/wish/entry/WishEntryText.java | 36 +++++ 23 files changed, 565 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/ContainerWish.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/ContainerWish.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/GuiWish.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/GuiWish.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/WishHandler$1.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/WishHandler.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/WishHandler.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/IWishEntry.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/IWishEntry.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryDeath.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryDeath.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryExp.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryExp.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryGeneric.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryGeneric.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryHealth.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryHealth.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryMoney.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryMoney.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntrySanity.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntrySanity.java create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryText.class create mode 100644 src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryText.java (limited to 'src/main/java/jp/plusplus/fbs/event/wish') diff --git a/src/main/java/jp/plusplus/fbs/event/wish/ContainerWish.class b/src/main/java/jp/plusplus/fbs/event/wish/ContainerWish.class new file mode 100644 index 0000000..600231f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/event/wish/ContainerWish.class differ diff --git a/src/main/java/jp/plusplus/fbs/event/wish/ContainerWish.java b/src/main/java/jp/plusplus/fbs/event/wish/ContainerWish.java new file mode 100644 index 0000000..fca62b9 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/event/wish/ContainerWish.java @@ -0,0 +1,17 @@ +package jp.plusplus.fbs.event.wish; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; + +/** + * Created by plusplus_F on 2016/03/31. + */ +public class ContainerWish extends Container { + + public ContainerWish(){} + + @Override + public boolean canInteractWith(EntityPlayer p_75145_1_) { + return true; + } +} diff --git a/src/main/java/jp/plusplus/fbs/event/wish/GuiWish.class b/src/main/java/jp/plusplus/fbs/event/wish/GuiWish.class new file mode 100644 index 0000000..435e82b Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/event/wish/GuiWish.class differ diff --git a/src/main/java/jp/plusplus/fbs/event/wish/GuiWish.java b/src/main/java/jp/plusplus/fbs/event/wish/GuiWish.java new file mode 100644 index 0000000..7874ca7 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/event/wish/GuiWish.java @@ -0,0 +1,88 @@ +package jp.plusplus.fbs.event.wish; + +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.container.ContainerContract; +import jp.plusplus.fbs.gui.button.GuiButtonEnchantment; +import jp.plusplus.fbs.packet.MessageGuiButtonWithString; +import jp.plusplus.fbs.packet.MessageWish; +import jp.plusplus.fbs.packet.PacketHandler; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +/** + * Created by plusplus_F on 2015/03/31. + */ +public class GuiWish extends GuiContainer { + public static final ResourceLocation rl = new ResourceLocation(FBS.MODID+":textures/gui/wish.png"); + public GuiTextField textField; + + public GuiWish() { + super(new ContainerWish()); + this.ySize=37; + } + + @Override + public void initGui() { + super.initGui(); + int i = (this.width - this.xSize) / 2; + int j = (this.height - this.ySize) / 2; + this.allowUserInput = true; + Keyboard.enableRepeatEvents(true); + + textField=new GuiTextField(fontRendererObj, i+9, j+17, 159, 9); + textField.setTextColor(-1); + textField.setDisabledTextColour(-1); + textField.setEnableBackgroundDrawing(false); + textField.setMaxStringLength(40); + } + + @Override + public void onGuiClosed(){ + super.onGuiClosed(); + Keyboard.enableRepeatEvents(false); + PacketHandler.INSTANCE.sendToServer(new MessageWish(textField.getText())); + } + + @Override + protected void drawGuiContainerForegroundLayer(int par1, int par2){ + super.drawGuiContainerForegroundLayer(par1, par2); + this.fontRendererObj.drawString(StatCollector.translateToLocal("info.fbs.wish.0"), 6, 4, 0x404040); + } + @Override + protected void drawGuiContainerBackgroundLayer(float v, int i, int i1) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + this.mc.getTextureManager().bindTexture(rl); + + int k = (this.width - this.xSize) / 2; + int l = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); + } + + @Override + protected void mouseClicked(int p_73864_1_, int p_73864_2_, int p_73864_3_) { + super.mouseClicked(p_73864_1_, p_73864_2_, p_73864_3_); + textField.mouseClicked(p_73864_1_, p_73864_2_, p_73864_3_); + } + + @Override + protected void keyTyped(char p_73869_1_, int p_73869_2_) { + if(!textField.textboxKeyTyped(p_73869_1_, p_73869_2_)){ + super.keyTyped(p_73869_1_, p_73869_2_); + } + } + + @Override + public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) { + super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + textField.drawTextBox(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/event/wish/WishHandler$1.class b/src/main/java/jp/plusplus/fbs/event/wish/WishHandler$1.class new file mode 100644 index 0000000..25f2f69 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/event/wish/WishHandler$1.class differ diff --git a/src/main/java/jp/plusplus/fbs/event/wish/WishHandler.class b/src/main/java/jp/plusplus/fbs/event/wish/WishHandler.class new file mode 100644 index 0000000..f482c7f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/event/wish/WishHandler.class differ diff --git a/src/main/java/jp/plusplus/fbs/event/wish/WishHandler.java b/src/main/java/jp/plusplus/fbs/event/wish/WishHandler.java new file mode 100644 index 0000000..d6fecbb --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/event/wish/WishHandler.java @@ -0,0 +1,74 @@ +package jp.plusplus.fbs.event.wish; + +import jp.plusplus.fbs.event.wish.entry.*; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + +/** + * Created by plusplus_F on 2016/03/31. + */ +public class WishHandler { + private static WishHandler instance=new WishHandler(); + private ArrayList wishEntries=new ArrayList(); + private boolean isSorted=false; + + private WishHandler(){} + + public static void register(){ + addWishEntry(new WishEntryGeneric()); + + addWishEntry(new WishEntryText("panty")); + addWishEntry(new WishEntryText("herobrine")); + addWishEntry(new WishEntryText("wish")); + addWishEntry(new WishEntryText("goddess")); + addWishEntry(new WishEntryText("achievement")); + addWishEntry(new WishEntryText("insanity")); + + addWishEntry(new WishEntryMoney()); + addWishEntry(new WishEntryDeath()); + addWishEntry(new WishEntryExp()); + addWishEntry(new WishEntryHealth()); + addWishEntry(new WishEntrySanity()); + } + + public static void addWishEntry(IWishEntry entry){ + instance.wishEntries.add(entry); + instance.isSorted=false; + } + + public static void handleWish(EntityPlayer player, String wish){ + if(!instance.isSorted){ + instance.isSorted=true; + Collections.sort(instance.wishEntries, new Comparator() { + @Override + public int compare(IWishEntry o1, IWishEntry o2) { + float p=o2.priority()-o1.priority(); + return p>0?1:(p<0?-1:0); + } + }); + } + + for(IWishEntry entry : instance.wishEntries){ + if(entry.matches(wish)){ + ItemStack itemStack=entry.get(player, wish); + if(itemStack!=null){ + EntityItem entityItem=player.entityDropItem(itemStack, player.getEyeHeight()); + if(entityItem!=null){ + entityItem.delayBeforeCanPickup=0; + } + } + return; + } + } + } + + public static String getGetMessage(String key){ + return "<"+ StatCollector.translateToLocal("wish.fbs.goddess")+">"+StatCollector.translateToLocal("wish.fbs."+key+".get"); + } +} diff --git a/src/main/java/jp/plusplus/fbs/event/wish/entry/IWishEntry.class b/src/main/java/jp/plusplus/fbs/event/wish/entry/IWishEntry.class new file mode 100644 index 0000000..230c9bc Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/event/wish/entry/IWishEntry.class differ diff --git a/src/main/java/jp/plusplus/fbs/event/wish/entry/IWishEntry.java b/src/main/java/jp/plusplus/fbs/event/wish/entry/IWishEntry.java new file mode 100644 index 0000000..71f8edb --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/event/wish/entry/IWishEntry.java @@ -0,0 +1,31 @@ +package jp.plusplus.fbs.event.wish.entry; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +/** + * Created by plusplus_F on 2016/03/31. + */ +public interface IWishEntry { + /** + * 0.0f-1.0fの範囲で優先度を返す
+ * 数値が大きいほど判定が優先される + * @return + */ + public float priority(); + + /** + * プレイヤーの願いと一致するか判定する + * @param string 願い事 + * @return 一致すればtrue + */ + public boolean matches(String string); + + /** + * 願いごとを叶える処理 + * @param player 願ったプレイヤー + * @param string 願い事 + * @return プレイヤーに与えるItemStack (Nullable) + */ + public ItemStack get(EntityPlayer player, String string); +} diff --git a/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryDeath.class b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryDeath.class new file mode 100644 index 0000000..f07be7a Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryDeath.class differ diff --git a/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryDeath.java b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryDeath.java new file mode 100644 index 0000000..9563aa2 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryDeath.java @@ -0,0 +1,33 @@ +package jp.plusplus.fbs.event.wish.entry; + +import jp.plusplus.fbs.event.wish.WishHandler; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.DamageSource; +import net.minecraft.util.StatCollector; + +import java.util.regex.Pattern; + +/** + * Created by plusplus_F on 2016/03/31. + */ +public class WishEntryDeath implements IWishEntry { + @Override + public float priority() { + return 1.f; + } + + @Override + public boolean matches(String string) { + return Pattern.compile(StatCollector.translateToLocal("wish.fbs.death.regex"), Pattern.CASE_INSENSITIVE).matcher(string).matches(); + } + + @Override + public ItemStack get(EntityPlayer player, String string) { + player.addChatComponentMessage(new ChatComponentText(WishHandler.getGetMessage("death"))); + player.attackEntityFrom(DamageSource.generic, 99999); + player.setDead(); + return null; + } +} diff --git a/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryExp.class b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryExp.class new file mode 100644 index 0000000..55dbc79 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryExp.class differ diff --git a/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryExp.java b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryExp.java new file mode 100644 index 0000000..1c63a22 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryExp.java @@ -0,0 +1,33 @@ +package jp.plusplus.fbs.event.wish.entry; + +import jp.plusplus.fbs.event.wish.WishHandler; +import net.minecraft.entity.boss.EntityDragon; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.DamageSource; +import net.minecraft.util.StatCollector; + +import java.util.regex.Pattern; + +/** + * Created by plusplus_F on 2016/03/31. + */ +public class WishEntryExp implements IWishEntry { + @Override + public float priority() { + return 1.f; + } + + @Override + public boolean matches(String string) { + return Pattern.compile(StatCollector.translateToLocal("wish.fbs.exp.regex"), Pattern.CASE_INSENSITIVE).matcher(string).matches(); + } + + @Override + public ItemStack get(EntityPlayer player, String string) { + player.addExperience(1000); + player.addChatComponentMessage(new ChatComponentText(WishHandler.getGetMessage("exp"))); + return null; + } +} diff --git a/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryGeneric.class b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryGeneric.class new file mode 100644 index 0000000..bad232e Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryGeneric.class differ diff --git a/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryGeneric.java b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryGeneric.java new file mode 100644 index 0000000..90e1346 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/event/wish/entry/WishEntryGeneric.java @@ -0,0 +1,153 @@ +package jp.plusplus.fbs.event.wish.entry; + +import com.google.common.collect.Maps; +import cpw.mods.fml.common.registry.GameData; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.characteristic.CharacteristicBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import java.util.*; + +/** + * Created by plusplus_F on 2016/03/31. + */ +public class WishEntryGeneric implements IWishEntry { + private static Integer[] itemIds; + private static String[] itemNames; + private Random rand=new Random(); + + @Override + public float priority() { + return 0.0f; + } + + @Override + public boolean matches(String string) { + return true; + } + + @Override + public ItemStack get(EntityPlayer player, String string) { + if(itemIds==null){ + Map idMapping = Maps.newHashMap(); + GameData.itemRegistry.serializeInto(idMapping); + + itemIds=new Integer[idMapping.size()]; + idMapping.values().toArray(itemIds); + itemNames=new String[idMapping.size()]; + idMapping.keySet().toArray(itemNames); + } + + + int maxMatchIndex=-1; + int maxMatchValue=0; + ItemStack maxMatchItemStack=null; + + //------------------------------------------------------------------------------------ + // 一致度の判定 + //------------------------------------------------------------------------------------ + if(string.contains(":")){ //ドメイン指定の名前かどうか判定して処理を分ける + String[] domainAndName=string.split(":"); + FBS.logger.info(""+domainAndName[0]+":"+domainAndName[1]); + + ArrayList[] tokens=new ArrayList[2]; + for(int i=0;i<2;i++){ + tokens[i]=new ArrayList(); // 名前を1文字ずつ区切ったトークン列 + for(char c : domainAndName[i].toCharArray()){ + if(c!=' ') tokens[i].add((Character)c); + } + } + + for(int i=0;i0){ + boolean perfect=(domainAndName[m].length()==itemDomainAndName[m].length()); + int length=itemDomainAndName[m].length(); + + ArrayList t=(ArrayList)tokens[m].clone(); + for(int k=0;k subItems=new ArrayList(); + item.getSubItems(item, item.getCreativeTab(), subItems); + + maxMatchItemStack=subItems.get(rand.nextInt(subItems.size())); + } + } + else{ + ArrayList tokens=new ArrayList(); // 名前を1文字ずつ区切ったトークン列 + // Java死ね + for(char c : string.toCharArray()){ + if(c!=' ') tokens.add((Character)c); + } + + for(int i=0;i subItems=new ArrayList(); + item.getSubItems(item, item.getCreativeTab(), subItems); + + // CreativeTabsに見える全てのアイテムについて調べる + for(ItemStack itemStack : subItems){ + int tmp=0; + String name=itemStack.getDisplayName(); + + boolean perfect=(name.length()==string.length()); + int length=name.length(); + ArrayList t=(ArrayList)tokens.clone(); + for(int k=0;k